1
0
mirror of https://github.com/fazo96/tesina.git synced 2025-01-10 11:34:20 +01:00

rimozione bitcoin

This commit is contained in:
Enrico Fasoli 2015-06-01 08:24:38 +02:00
parent 0161124293
commit dc421cc2d5
9 changed files with 46 additions and 170 deletions

View File

@ -1,20 +0,0 @@
## Anonimato
Secondo le regole suddette, __tutti possono sapere quanti soldi ci sono in ogni portafoglio e l'intero elenco di tutte le transazioni della storia__, però __i portafogli sono identificabili esclusivamente tramite la loro chiave pubblica, non conservano informazioni sul proprietario__.
I Bitcoin sono infatti molto usati per __pagare servizi o merci illegali__, ma vengono anche accettati da alcuni legittimi negozi o come donazioni.
## Limitazioni, problemi e vulnerabilità
Gli indirizzi bitcoin sono anonimi per definizione, però __tutti possono vedere tutte le transazioni__ a causa delle regole del protocollo, dunque è difficile nascondere delle transazioni: può essere fatto distribuendo i soldi a indirizzi diversi in piccole transazioni, ma richiede molta preparazione e organizzazione.
## L'esplosione di popolarità e la nascita dei cloni
Quando il valore di un bitcoin cominciò a salire verso enormi cifre, comparsero numerose varianti del protocollo con diversi gradi di successo (come Dogecoin) ma mai quanto Bitcoin.
### La caduta di Mt. Gox
Nello stesso periodo comparsero dei servizi simili alle banche tra cui il colosso __Mt. Gox__, che oltre al normale funzionamento di __Exchange__, gestivano i Bitcoin dei clienti producendo interesse tramite __speculazione__. Mt. Gox e tanti altri fallirono (dichiarando bancarotta) quando il valore di bitcoin iniziò a scendere lentamente per alcuni mesi, causando il panico e il ritiro di enormi somme.
Nella comunità, molti furono contenti di questo evento perchè i Bitcoin furono originariamente creati anche per liberarsi delle banche e della __centralizzazione__.

View File

@ -1,17 +0,0 @@
![Bitcoin](http://media.tumblr.com/tumblr_lmupioyU7M1qznjpp.png)
__Bitcoin è una valuta digitale (criptovaluta)__ (la prima nella storia ad avere un reale valore) e un protocollo per lo scambio della stessa via rete. Esistono numerose implementazioni, varianti ed evoluzioni del protocollo Bitcoin, anche usate per motivi diversi dallo scambio di denaro.
L'autore di Bitcoin è conosciuto con lo pseudonimo di __Satoshi Nakamoto__, anche se la sua vera identità non è nota.
Bitcoin __non necessita di autorità centrali__ perchè funziona tramite __una rete decentralizzata che agisce da database distribuito__.
Un __singolo bitcoin__ è arrivato anche a valere __oltre mille dollari statunitensi__, e la valuta è accettata come forma di pagamento dalla __Free Software Foundation__, __Wikimedia Foundation__ ed __Eletronic Frontier Foundation__. Anche __Amazon__ e __Ebay__ la accettano, in alcuni casi e tramite alcuni intermediari. L'anonimato coinvonto nell'uso della moneta ne ha permesso l'adozione da parte di __criminali__ come pagamento per __attività illecite__.
I servizi che offrono la possibilità di __scambiare bitcoins con valute non digitali come euro e dollaro americano__ sono convenzione chiamati __bitcoin exchange__. Tramite il sito [bitcoin-italia.org](https://www.bitcoin-italia.org/compravenditalink-utili/) è possibile vedere una __lista di exchange considerati affidabili utilizzabili in Italia__.
Al momento della scrittura di questo documento:
- esistono circa __14 miloni__ di bitcoins
- un bitcoin vale approssimativamente __213 euro__
- la totalità di essi vale quasi __3 miliardi di euro__ (basandosi sul valore attuale di un bitcoin)

View File

@ -1,25 +0,0 @@
## Come si usa
Per usare Bitcoin è necessario:
1. scaricare un client (erroneamente chiamato __wallet__ in molti casi), ovvero un'implementazione software del protocollo.
- esistono client disponibili per ogni piattaforma comune, come android, iOS, Windows, OSX eccetera
1. usando il client:
1. creare un __wallet__
1. cominciare a effettuare transazioni
Da notare che _la maggior parte_ dei client, per funzionare, richiedono il download dell'intera __blockchain__ dalla rete, che al momento della scrittura di questo documento equivale a __33 GB__.
### Bitcoin Client
Ne esistono numerosi per molte piattaforme. Uno dei migliori, considerato più affidabile e utile è [Electrum](https://electrum.org).
#### Electrum
- supporta Windows, OSX, Linux e Android
- è __Open Source__ e dunque affidabile poichè gli sviluppatori non possono nascondere __backdoor__ o __vulnerabilità__ nel codice.
- permette di generare un __wallet__ usando __una passphrase__, in modo che se un wallet viene perso è possibile rigenerarlo usando la stessa frase.
- permette di __evitare di dover scaricare l'intera blockchain__ usando i server di Electron. Questa opzione apre una serie di possibili vulnerabilità non gravi, ma chi non si fida può semplicemente evitare di utilizzarla.
- offre un'interfaccia web che, tramite la __chiave pubblica__ del proprio __wallet__, permette di visualizzare i dati del proprio portafoglio ma non di compiere azioni.
- permette di utilizzare __portafogli hardware__, __multipli portafogli__ e __fondi condivisi__.

View File

@ -1,23 +0,0 @@
## Concetti
Il protocollo Bitcoin consiste in una rete decentralizzata (da ora in poi detta semplicemente __"la rete"__) di nodi che processano le richieste di trasferimento di denaro e da una __blockchain__ ovvero una lista di tutte le transazioni eseguite a partire dall'origine della moneta.
- Un __portafoglio__ è usato come contenitore di denaro (__Bitcoins__) identificato dalla sua __chiave pubblica__, ma in realtà è semplicemente una __coppia di chiavi crittografiche__ usate per associare la quantità di denaro posseduta al proprietario.
- E' possibile creare liberamente uno o più __portafogli__.
- Una __transazione__ è un trasferimento di denaro: tutte le transazioni vanno validate dalla rete e sono poi aggiunte, se valide, alla __blockchain__.
- la rete considera valida una __transazione__ solo se il __portafoglio sorgente__ possiede __sufficienti bitcoin__ per poterli trasferire al __portafoglio destinatario__.
- un __nodo della rete Bitcoin__ consiste semplicemente in un computer in grado di comunicare con altri membri della rete.
- i nodi eseguono il software di una delle implementazioni del protocollo Bitcoin.
- i nodi collaborano e si fidano delle informazioni ricevute dagli altri nodi solo se possono verificarne la validità indipendentemente. In alternativa, vengono considerate valide le informazioni solo se gran parte della rete le considera valide.
Dalle suddette informazioni possiamo dedurre che:
- non esiste alcun tipo di centralizzazione o server se non un __tracker__ usato dai nodi per scoprire gli indirizzi IP degli altri nodi
- un portafoglio vuoto è irrilevante per la rete, ma entra a far parte della blockchain se riceve dei bitcoin.
- ovviamente, per generare una transazione da un portafoglio, essa va comunicata alla rete e __firmata digitalmente__ con la __chiave privata__ associata al __portafoglio__.
- le transazioni vengono diffuse e validate da ogni nodo. Se considerate valide (ovvero il portafoglio sorgente ha sufficienti bitcoin), vengono aggiunte alla __blockchain__ da tutta la rete.
- la quantità di bitcoin in un portafoglio è calcolabile semplicemente leggendo tutte le transazioni che lo riguardano in ordine cronologico
Esistono inoltre:
- __hardware wallet__, ovvero portafogli contenuti in un dispositivo hardware come una chiavetta USB, che possono essere usati solo mentre sono connessi alla macchina.
- __fondi condivisi__, ovvero dei fondi che richiedono la firma digitale di __multipli portafogli__ per essere trasferiti.

View File

@ -1,39 +0,0 @@
## Incentivi e disincentivi
Per disincentivare la creazione di __enormi quantità di transazioni in poco tempo__ (che creerebbe numerosi problemi alla rete) le transazioni vanno accompagnate con un __proof of work__, ovvero la soluzione ad un complesso problema matematico, per provare che del tempo è stato speso per generare la transazione.
### La messa in circolo tramite Bitcoin Mining
All'origine della rete, essa è __inutilizzabile__ a causa delle sue stesse regole: __se nessuno può trasferire bitcoins senza possederli, come è possibile ottenere dei bitcoin?__
I bitcoin vengono messi in circolazione tramite __bitcoin mining__, che consiste nel effettuare i controlli matematematici per __provare la validità di una transazione__.
Il processo di __controllo della validità di una transazione__ è lento e richiede molta potenza di calcolo, di coseguenza __per incentivarlo, la rete premia i "lavoratori" inserendo dei bitcoin nel loro portafoglio__.
Nel tempo, i Bitcoin hanno acquistato __un valore anche di centinaia di dollari per un singolo Bitcoin__ quindi il __bitcoin mining__ può essere un'attività estremamente __lucrativa__.
### Proof of Work
Un proof of work consiste semplicemente nel trovare un __valore__ il cui __hash SHA-256__, quando rappresentato tramite notazione esadecimale, inizia con una certa quantità di __zeri__.
Esempi:
| Valore | SHA-256 (Troncato)|
| -- | -- |
| test | 9f86d081884c7d65... |
| valore_di_esempio | a9a23159b7c4555b... |
| stringa_hash | 4b4c1b2efca629b62... |
Essendo l'__hashing__ una procedura __non prevedibile__, l'unico modo per trovare un hash che soddisfi i requisiti è __procedere casualmente__.
Dunque il tempo richiesto per calcolare __miliardi di hash__ fino a trovare un valore che soddisfi i __requisiti__ è immenso, rendendo il __proof-of-work__ una procedura inventata per essere lenta, in modo da __provare__ che numerosi minuti sono stati spesi per effettuare un'operazione e dunque impedire l'invio di immense quantità di operazioni.
### Bitcoin mining come reddito principale
Nel tempo, il numero di transazione da validare è aumentato sempre di più, ma anche il numero e la potenza di calcolo offerta dai miners è aumentata: ecco perchè sono nate le __mining pool__, delle organizzazione che raggruppano i miners in modo da produrre __enormi quantità di bitcoin in pochissimo tempo__, dividendolo __in base alla percentuale di calcoli svolti da ogni miner__.
I vantaggi principali sono __la percezione di piccole quantità di bitcoin molto spesso__ da parte di ogni miner, invece che __percepire enormi quantità ma dopo anni e anni di lavoro__, poichè un singolo computer è estremamente lento in questa procedura, e percepirebbe un guadagno dalla rete enorme ma solo dopo enormi quantità di tempo.
In casi in cui la grande quantità di corrente elettrica necessaria per il mining e i costi aggiuntivi di manutenzione e aria condiziata non superino i guadagni, il mining può essere un'attività in grado di generare profitti.
Nel passato ci sono stati casi in cui dei software miner sono stati inclusi nel codice di alcuni popolari programmi gratuiti come __uTorrent__ e il videogioco __Team Fortress 2__. Questo ha permesso ai malfattori di guadagnare soldi sfruttando la potenza di calcolo degli utenti di questi software (ovviamente in maniera illecita).

View File

@ -1,27 +0,0 @@
# Vulnerabilità del protocollo
Fonte: [cryptocurrencymadesimple.com](http://cryptocurrencymadesimple.com/bitcoin-vulnerabilities/)
## Il problema del 50%+1
Se un'entità dovesse avere il controllo del 50% + 1 dei nodi della rete bitcoin sarebbe in grado di prendere decisioni sulla validità di ogni transazione il 50% + 1 delle volte, riuscendo ad avedere un'influenza troppo alta sulla rete.
Ma come visto nella sezione __incentivi e disincentivi__, non conviene ottenere il 50% + 1 del controllo sulla rete perchè il valore dei bitcoin crollerebbe, rendendo inutile l'attacco. Di conseguenza, tutte le volte che un gruppo arrivò vicino alla soglia pericolosa nel passato, la sua crescità fu fermata oppure il gruppo si divise per evitare la possibilità dell'attacco.
## "Transation Malleability" attack
Questo attacco è una forma di __Denial of Service (DoS)__ che consiste nell'inviare più volte la stessa transazione (con lo stesso mittente, destinatario e quantità) ma cambiando i meta dati allegati in modo che la rete debba spendere una quantità di tempo considerevole nel decidere quale delle transazioni è quella valida.
A un certo punto, con una grande quantità di transazioni clone inserite nella rete, il tempo impiegato per validare una transazione reale diventa troppo lungo, rendendo difficile muovere fondi e di conseguenza rendendo inutile la rete.
Ma sempre a causa degli __incentivi__ nel mantenere la rete funzionante, è difficile che qualcuno voglia far crollare il valore della moneta. Inoltre questo attacco richiede un'enorme quantità di potenza di calcolo a causa del __proof of work__ richiesto per ogni transazione.
## Vulnerabilità della crittografia asimmetrica
Il concetto di Bitcoin dipende interamente dalla crittografia asimmetrica, di conseguenza tutti i problemi di sicurezza legati ad essa e alla gestione delle __chiavi private__ sono applicabili al protocollo Bitcoin.
## Il furto del portafoglio
La maggior parte dei __client__ memorizza il portafoglio in un semplice file __wallet.dat__. Se qualcuno dovessere copiare questo file, potrebbe trasferire l'intera somma contenuta nel portafoglio in un'altro portafoglio!
Una possibile soluzione è, __tramite Electrum__, non memorizzare il portafoglio ma rigenerarlo ogni volta usando una __passphrase__ (portafoglio parametrico). Ovviamente, la __passphrase__ deve essere segreta e sicura!

View File

@ -1,17 +1,12 @@
# Summary # Summary
* [Introduzione](README.md) * [Introduzione](README.md)
* [Il Web Moderno e le sue Conseguenze](web_moderno.md) * [Il Web 2.0 e i suoi problemi](Web/web_moderno.md)
* [Analisi delle soluzioni](Web/soluzioni.md)
* [Navigare anonimi con Tor](Tor/tor.md) * [Navigare anonimi con Tor](Tor/tor.md)
* [Come si usa](Tor/come_si_usa.md) * [Come si usa](Tor/come_si_usa.md)
* [Limitazioni e Problemi](Tor/limitazioni_e_problemi.md) * [Limitazioni e Problemi](Tor/limitazioni_e_problemi.md)
* [Contromisure](Tor/contromisure.md) * [Contromisure](Tor/contromisure.md)
* [Bitcoin, la moneta digitale](Bitcoin/bitcoin.md)
* [Concetti](Bitcoin/concetti.md)
* [Come si usa](Bitcoin/come_si_usa.md)
* [Incentivi e disincentivi](Bitcoin/incentivi_e_disincentivi.md)
* [Anonimato](Bitcoin/anonimato.md)
* [Limitazioni e problemi](Bitcoin/limitazioni_e_problemi.md)
* [Messaggistica anonima](Messaggistica/introduzione.md) * [Messaggistica anonima](Messaggistica/introduzione.md)
* [Bitmessage: l'alternativa sicura alle Email](Messaggistica/bitmessage.md) * [Bitmessage: l'alternativa sicura alle Email](Messaggistica/bitmessage.md)
* [Condividere file con sicurezza](FileSharing/file_sharing.md) * [Condividere file con sicurezza](FileSharing/file_sharing.md)

44
Web/soluzioni.md Normal file
View File

@ -0,0 +1,44 @@
# Soluzioni ai problemi del Web
Dopo aver definito le caratteristiche _problematiche_ del moderno _World Wide Web_, vediamo le loro possibili soluzioni.
## Navigazione
Riassumento, i problemi del navigare il web sono il __tracciamento__, l'__analisi comportamentale__ e le __pubblicità mirate__: vediamo ora come risolverli.
### Ad Blocker
Un __Ad Blocker__ è un software in grado di nascondere le pubblicità sulle pagine web visitate. Gli __Ad Blocker__ più avanzati sono in grado di:
- nascondere gli elementi della pagina dedicati alle pubblicità
- evitare l'esecuzione di __script__ o memorizzazione di __cookie__ non necessari per la fruizione dei contenuti della pagina, ad esempio quelli dedicati al tracciamento
Gli __Ad Blocker__ più conosciuti sono __AdBlock__ e __AdBlock Plus__, entrambi però sono __Closed Source__ e generalmente considerati meno affidabili dell'alternativa __uBlock__, che si presenta come una soluzione più moderna, performante e completamente __Open Source__.
### Ghostery
Tramite il plugin __Ghostery__, disponibile per tutti i browser web più usati, è possibile:
- vedere le informazioni di tracciamento che vengono inviate ai server dei vari siti web che utilizziamo
- conoscere le aziende a cui sono destinate tali informazioni
- bloccare l'invio delle informazioni di tracciamento
__Per provare tutto ciò__ è infatti sufficiente installare __Ghostery__ e, seguendo le istruzioni su [ghostery.com/it](http://ghostery.com/it/), collegarsi a uno o più social network o servizio come Google, LinkedIn, Facebook, notando __immediatamente__ lo scambio di dati di tracciamento tra noi e i server di questi servizi.
Attenzione però: __Ghostery è un software Closed Source__, dunque non è possibile sapere esattamente che tipo di operazioni esegua, la qualità della sua efficacia, e eventuali __backdoor__ presenti o __raccolte dati__ effettuate dal software.
## Servizi
Per i servizi come __File Sharing__, __Messaggistica__ e __Cloud Storage__ le alternative devono essere:
- __decentralizzate__ o, alternativamente, permettere il __self-hosting__,
- configurabili e adattabili a diverse situazioni e casi d'uso,
- rispettare la __privacy__ e consentire l'__anonimato__, limitando i dati immagazzinati o evitandone completamente la raccolta.
### Self-Hosting
Il __self-hosting__ è una caratteristica di un __servizio__ che gli permette di creare diverse __istanze personalizzate__ gestite internamente da un'organizzazione o un privato. Questa caratteristica è associata ai servizi __liberi ma non decentralizzabili__ come ad esempio un __DBMS__.
### Decentralizzazione
La __decentralizzazione__ è una caratteristica di un __servizio__ che gli permette di

View File

@ -60,15 +60,3 @@ Google è uno dei servizi che raccoglie il maggior numero di dati dai propri ute
- __OpenStreetMap__ al posto di __Google Maps__ - __OpenStreetMap__ al posto di __Google Maps__
- le soluzioni illustrate nel capitolo __"Condividere File Con Sicurezza"__ al posto di Google Drive - le soluzioni illustrate nel capitolo __"Condividere File Con Sicurezza"__ al posto di Google Drive
- un mail server gestito personalmente in accoppiata con un client mail sicuro al posto di GMail - un mail server gestito personalmente in accoppiata con un client mail sicuro al posto di GMail
### Ghostery
Tramite il plugin __Ghostery__, disponibile per tutti i browser web più usati, è possibile:
- vedere le informazioni di tracciamento che vengono inviate ai server dei vari siti web che utilizziamo
- conoscere le aziende a cui sono destinate tali informazioni
- bloccare l'invio delle informazioni di tracciamento
__Per provare tutto ciò__ è infatti sufficiente installare __Ghostery__ e, seguendo le istruzioni su [ghostery.com/it](http://ghostery.com/it/), collegarsi a uno o più social network o servizio come Google, LinkedIn, Facebook, notando __immediatamente__ lo scambio di dati di tracciamento tra noi e i server di questi servizi.
Attenzione però: __Ghostery è un software Closed Source__, dunque non è possibile sapere esattamente che tipo di operazioni esegua