From 47a33577555fb444c98e5ed9f2f0304ff6c06a05 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 12 Dec 2021 04:21:26 +0000 Subject: [PATCH 1/8] Add 'notes.md' --- notes.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 notes.md diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..27faae3 --- /dev/null +++ b/notes.md @@ -0,0 +1,49 @@ +# Summary + +TLDR: ECC profits directly from their own users lack of privacy. + + The company behind Zcash, Electric Coin Company, works directly with Law Enforcement and blockchain analysis companies, whose largest customers are Law Enforcement Organizations (LEOs). + This is the Military-Industrial-Surveillance complex, where ECC directly profits from their users lack of privacy + The Hush community finds this to be an egregious conflict-of-interest + What follows are important summaries and quotes from this video: + +https://www.bitchute.com/video/PWXU7D4VV0lB/ + + The video was removed from YouTube and then uncensored by the Monero community + + The companies actually make fun of Zcash optional privacy, but say if people use the tech, they can't track it. + + It shows that ECC profits directly from their own users lack of privacy. + + 0:43:45 + +Ciphertrace and other companies are starting to work with Zcash team at Electric Coin Company on integration +of tools for that blockchain. + +-- Dave Jevans, CEO of Ciphertrace + + 1:00:00 - Summary of Bitcoin ATM usage: stolen CC's, darknet markets, overseas remittance to family members + 1:03:24 - Mixers can be wiretapped, Denial-of-Service'd and have code errors, not as good as privacy coins. + 1:03:55 - Custody and exit fraud risk of "mixers" are inferior to protocol level privacy. Privacy coins have less risk of theft, almost none + 1:04 - + +We also have projects that are funded by Law Enforcement Organizations, +to work on Monero and Zcash tools and support, so there is good interest +in the research funding side, as well as the investigation side. + +``` - Dave Jevans, CEO of Ciphertrace + +The other thing, we are in touch with some communities and I would say, for example, we are getting a lot of helpful attitude from the Zcash Community, they were able to explain to us how exactly coin anonymization feature worked. Of course, if you have a suspect that knows what he is doing, he is not making stupid mistakes, their community is, of course, not in a position to help. + +-- ChainAnalysis + + +* 1:04:20 - What should Law Enforcement Organizations do? +* 1:05:00 - What Should Law Enforcement Do When They See A Privacy Coin? + * Very few options, forensics tools don't help. Monero + Tor is a dead end. + * Seizing phones is the easiest way to de-anonymize privacy coins! +* 1:06:00 - Telling Law Enforcement to search for privacy coin wallets, not just Bitcoin wallets, on seized phones. + Wallets can be imported into surveillance software. + + +Originally from https://gist.github.com/leto/c351124c937e1516e9ac37e86738b0b2 \ No newline at end of file From 339786f1dc003bca7802ce6f430ff552877f6ce7 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 12 Dec 2021 04:23:50 +0000 Subject: [PATCH 2/8] Update 'notes.md' --- notes.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/notes.md b/notes.md index 27faae3..110f551 100644 --- a/notes.md +++ b/notes.md @@ -2,18 +2,20 @@ TLDR: ECC profits directly from their own users lack of privacy. - The company behind Zcash, Electric Coin Company, works directly with Law Enforcement and blockchain analysis companies, whose largest customers are Law Enforcement Organizations (LEOs). - This is the Military-Industrial-Surveillance complex, where ECC directly profits from their users lack of privacy - The Hush community finds this to be an egregious conflict-of-interest - What follows are important summaries and quotes from this video: +The company behind Zcash, Electric Coin Company, works directly with Law Enforcement and blockchain analysis companies, whose largest customers are Law Enforcement Organizations (LEOs). + +This is the Military-Industrial-Surveillance complex, where ECC directly profits from their users lack of privacy + +The Hush community finds this to be an egregious conflict-of-interest +What follows are important summaries and quotes from this video: https://www.bitchute.com/video/PWXU7D4VV0lB/ - The video was removed from YouTube and then uncensored by the Monero community +The video was removed from YouTube and then uncensored by the Monero community - The companies actually make fun of Zcash optional privacy, but say if people use the tech, they can't track it. +The companies actually make fun of Zcash optional privacy, but say if people use the tech, they can't track it. - It shows that ECC profits directly from their own users lack of privacy. +It shows that ECC profits directly from their own users lack of privacy. 0:43:45 @@ -46,4 +48,5 @@ The other thing, we are in touch with some communities and I would say, for exam Wallets can be imported into surveillance software. + Originally from https://gist.github.com/leto/c351124c937e1516e9ac37e86738b0b2 \ No newline at end of file From 8ed6ddf2eda50da7b81a040d73de979cf2f1870a Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 12 Dec 2021 04:24:42 +0000 Subject: [PATCH 3/8] Update 'notes.md' --- notes.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/notes.md b/notes.md index 110f551..b814eff 100644 --- a/notes.md +++ b/notes.md @@ -29,24 +29,25 @@ of tools for that blockchain. 1:03:55 - Custody and exit fraud risk of "mixers" are inferior to protocol level privacy. Privacy coins have less risk of theft, almost none 1:04 - +``` We also have projects that are funded by Law Enforcement Organizations, to work on Monero and Zcash tools and support, so there is good interest in the research funding side, as well as the investigation side. -``` - Dave Jevans, CEO of Ciphertrace + - Dave Jevans, CEO of Ciphertrace +``` +``` The other thing, we are in touch with some communities and I would say, for example, we are getting a lot of helpful attitude from the Zcash Community, they were able to explain to us how exactly coin anonymization feature worked. Of course, if you have a suspect that knows what he is doing, he is not making stupid mistakes, their community is, of course, not in a position to help. -- ChainAnalysis - +``` * 1:04:20 - What should Law Enforcement Organizations do? * 1:05:00 - What Should Law Enforcement Do When They See A Privacy Coin? * Very few options, forensics tools don't help. Monero + Tor is a dead end. * Seizing phones is the easiest way to de-anonymize privacy coins! -* 1:06:00 - Telling Law Enforcement to search for privacy coin wallets, not just Bitcoin wallets, on seized phones. - Wallets can be imported into surveillance software. - +* 1:06:00 - Telling Law Enforcement to search for privacy coin wallets, not just Bitcoin wallets, on seized phones. Wallets can be imported into surveillance software. Originally from https://gist.github.com/leto/c351124c937e1516e9ac37e86738b0b2 \ No newline at end of file From 381a418f4b63829c855febdd58c5e0adbd9a3141 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 30 Dec 2021 20:21:35 -0500 Subject: [PATCH 4/8] update FTE stuff from comments by Guilia Fanti --- protocol/README.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/protocol/README.md b/protocol/README.md index 046631a..60eea37 100644 --- a/protocol/README.md +++ b/protocol/README.md @@ -98,14 +98,17 @@ transactions with high likelihood. ## Defeating "First Timestamp Estimator" (FTE) +The idea of a FTE comes from "Anonymity Properties of the Bitcoin P2P Network" at https://arxiv.org/pdf/1703.08761.pdf by Giulia Fanti and Pramod Viswanath. +We thank Guilia Fanti for their feedback on this section. Dandelion is one way to try to defeat it, but the internals implementation is complex and can potentially add new attacks, which is why it was never merged into Bitcoin. Monero does have Dandelion, but attacks such as BADCACA show it is still vulnerable to Sybil Attacks. Dandelion++ is an improvement to Dandelion that fixes many issues with the original Dandelion algorithm, but so far it seems no cryptocoin fully implements it, likely because of the complexity of how it changes network and mempool internals. -Hush was motivated by the question "What is the simplest way to defeat the first timestamp estimator?". We also wanted to optimize for very bad conditions, -of Sybil Attacks that run 50-99% of nodes, not small Sybil Attacks when the attacker runs less than half the nodes in the network. Implementing Dandelion +Hush was motivated by the question "What is the simplest way to defeat the first timestamp estimator?". We also wanted to optimize for relatively bad conditions, +of Sybil Attacks that run up to 49% of nodes. Sybil attacks of 50% or more of the network are very powerful and no cryptocoin, to our knowledge, has come up with +a method to protect against them. Implementing Dandelion requires changing how the mempool works and we also wanted to avoid that, since it's very hard to know if new vulnerabilities are being introduced. Hush's method to defeat the FTE is choosing a *random subset of peers* at transaction relay time, and only relaying the transaction to those peers. @@ -114,19 +117,22 @@ latency is on the order of seconds, it does not slow down anything noticeable to down in case of odd numbers. So for instance, if a Hush node has 5 outbound connections, it will relay to a random subset of 2 of them, which is 40%. Rounding down helps make things harder on the attacker for nodes with small numbers of outbound connections, such as those who have only recently joined the network. -Imagine a scenario where the network is 50% Sybil nodes, which are using the FTE to correlate which nodes created which transactions, i.e. creating +Imagine a scenario where the network is 25% Sybil nodes, which are using the FTE to correlate which nodes created which transactions, i.e. creating a mapping between IP address and transaction id. With the Hush transaction relay algorithm, it's possible for a Sybil node to be directly connected to the node making a transaction, yet that node might not relay the transaction to the Sybil node, since that outbound node is not one of the randomly 50% of peers that is chosen when the transaction is made. -If we assume that 50% of our nodes are Sybil nodes and we only relay our transaction to 50% of our connections, then on average, the FTE will only be correct -25% of the time. As we assume the Sybil Attacker has a larger percentage of network nodes, the FTE will increase in accuracy but never be more than 50% accurate, which is -not very good at all. +If we assume that 25% of our nodes are Sybil nodes and we only relay our transaction to 50% of our connections, then on average, the FTE will only be correct +12.5% of the time. As we assume the Sybil Attacker has a larger percentage of network nodes, the FTE will increase in accuracy but never be more than 50% accurate, unless +it has Sybile nodes which comprise more than 50% of the network. Nodes with small numbers of connections also do well against the attacker. If a node has only 3 outbound connections and makes a transaction, it will only relay it to 1 -node, which is 33%. If we assume a Sybil Attacker with 50% of network nodes, the FTE will only be accurate about 17% of the time in trying to decide which node made the -transaction. In the same situation, a Hush node with 15 connections will result in an FTE with ~23% accuracy. +node, which is 33.3% of it's peers. If we assume a Sybil Attacker with 25% of network nodes, the FTE will only be accurate about `25% * 33% =~ 8.3%` of the time in trying to decide which node made the +transaction. In the same situation, a Hush node with 15 connections will result in an FTE with `25% * 7/15 =~ 11.6%` accuracy. + +We note that, as mentioned by Guilia Fanti, if a Sybil Attacker comprises say, 99% of nodes on the network, then they will almost always be one of the peers of every +other node on the network, and the above defense fails. ## Tor P2P Support -Tor v2 was deprecated by the Tor network and they have changed to v3, and Hush is currently in the process of merging Tor v3 support from BTC Core. +Tor v2 was deprecated by the Tor network and they have changed to v3, and Hush is currently in the process of merging Tor v3 support from BTC Core on the `p2p` branch of hush3.git. From 6894ff0984a06cc60cde67720058a6cf386354c3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 31 Dec 2021 03:23:03 -0500 Subject: [PATCH 5/8] Document Pirate Copyright Infringement --- copyright-infringement.md | 119 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 copyright-infringement.md diff --git a/copyright-infringement.md b/copyright-infringement.md new file mode 100644 index 0000000..63811d0 --- /dev/null +++ b/copyright-infringement.md @@ -0,0 +1,119 @@ +# Copyright Infringement of HUSH code + +This file exists to document the copyright infringement of HUSH code as clearly as possible +with as much supporting info as possible, so people can decide for themselves. Any project +that infringes on "The Hush Developers" copyright will be listed here. Currently there +is one project that severely infringes the copyright of Hush code, which is Pirate. + + +## What is Copyright Infringement? + +Copyright infringement is when one project takes code from another project, and maliciously +or accidentally changes copyright information and/or mixes code of incompatible copyrights +together. In the case of HUSH, our code is GNU Public License Version 3 (GPLv3), which means +projects that use non-GPL code cannot (legally) take our code and add it to their project, +unless they: + + * Change their copyright to GPLv3 (or a higher version) + * Add copyright disclaimers from "The Hush Developers" + +## z\_getbalances RPC + +Hush wrote a new RPC which does not exist in any other cryptocoin called `z_getbalances` first created on April 13th 2021 in commit +https://github.com/hushmirror/hush3/commit/52e14828c8366d28a47d16acff42f64e988669fe then less than a month later the same exact RPC name, with same functionality was added +in Pirate commit https://github.com/PirateNetwork/pirate/commit/be114569ec692c41b0af5d6ad84e6acf7da6305f . It adds a new optional argument and is a derived work: + +https://github.com/hushmirror/hush3/blob/dev/src/wallet/rpcwallet.cpp#L3646 + +https://github.com/PirateNetwork/pirate/blob/master/src/wallet/rpcwallet.cpp#L4157 + +## hush-cli was renamed pirate-cli + +Very interestingly, in https://github.com/PirateNetwork/pirate/commit/412f5a296165ed7601749383cb4b94a4d8a0a9c5 it can be seen +that the `hush-cli` script was renamed `pirate-cli`, and the Hush copyright line was removed and replaced with a Pirate copyright +that says "no rights reserved" : + +``` +#!/bin/bash +-# Copyright (c) 2019 Hush developers ++# Copyright (c) 2019 PirateChain - no rights reserved + +# set working directory to the location of this script +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cd $DIR + +-NAME=HUSH3 ++NAME=PIRATE +CLI=${KOMODOCLI:-./komodo-cli} +$CLI -ac_name=$NAME "$@" +``` + +This file no longer exists in their master branch, but is a good example of Pirate blatantly infringing on Hush code copyright. + +## TLS Code + +Pirate seems to have copied huge sections of the TLS code from Hush, including entire files +and detailed code comments in certain functions, while also not adding our Copyright disclaimer +to their files. Since Pirate is MIT and Hush is GPLv3, mixing this code is incompatible. + +For instance: https://github.com/hushmirror/hush3/blob/dev/src/hush/tlsenums.h was created in +commit https://github.com/PirateNetwork/pirate/commit/a21bf4051094a8ca9c481efd32d706361e8003b5 +on Oct 31st 2021 but https://github.com/hushmirror/hush3/blob/dev/src/hush/tlsenums.h was +created on Sep 29th 2020 in commit https://github.com/hushmirror/hush3/commit/62f67821ecd801cc26b9f3aa14de8735d6563a0a + +The files are almost exactly the same, except Hush Copyright lines have been removed, the namespace +"hush" was changed to "tls" and whitespace has been added. The exact ordering of elements and exact +names of variables is exactly the same. + +Another fact is that all the filenames in https://github.com/PirateNetwork/pirate/tree/master/src/tls +are exactly the same as the filenames in https://github.com/hushmirror/hush3/tree/dev/src/hush yet +the Hush files were created over a year prior. + +Additionally the function threadSocketHandler at https://github.com/PirateNetwork/pirate/blob/master/src/tls/tlsmanager.cpp#L347 +is almost exactly the same. The differences are because Hush uses WolfSSL where Pirate uses OpenSSL and +logging to a different log category ("net" vs "tls") . + +The `-tls` CLI option and `-tls=only` argument was added in commit https://github.com/hushmirror/hush3/commit/62f67821ecd801cc26b9f3aa14de8735d6563a0a on Sep 29th 2020 +and then appears over a year later in Pirate source code in commit https://github.com/PirateNetwork/pirate/commit/a21bf4051094a8ca9c481efd32d706361e8003b5 + +Additionally, Hush added the field `tls_connections` to two RPCs: `getinfo` and `getnetworkinfo` and Pirate took this code, +and turned the oneliner to a for loop to make it look different, yet it is still a derived work: + +``` +pirate/src/rpc/net.cpp +515: " \"tls_connections\": xxxxx, (numeric) the number of TLS connections\n" +557: obj.push_back(Pair("tls_connections", sslNode)); + +pirate/src/rpc/misc.cpp +212: " \"tls_connections\": xxxxx, (numeric) the number of TLS connections\n" +302: obj.push_back(Pair("tls_connections", sslNode)); + +hush3/src/rpc/net.cpp +506: " \"tls_connections\": xxxxx, (numeric) the number of TLS connections\n" +541: obj.push_back(Pair("tls_connections", (int)std::count_if(vNodes.begin(), vNodes.end(), [](CNode* n) {return n->ssl != NULL;}))); + +hush3/src/rpc/misc.cpp +219: " \"tls_connections\": xxxxx, (numeric) the number of encrypted TLS (SSL) connections\n" +293: obj.push_back(Pair("tls_connections", (int)std::count_if(vNodes.begin(), vNodes.end(), [](CNode* n) {return n->ssl != NULL;}))); +``` + +You can also notice they exactly copied the documentation of each RPC, with no changes. + +In the file `src/net.h` you can see that Pirate copied the exact variable names of the TLS context objects: + +``` +pirate/src/net.h +extern SSL_CTX *tls_ctx_server; +extern SSL_CTX *tls_ctx_client; + +/hush3/src/net.h +extern SSL_CTX *tls_ctx_server; +extern SSL_CTX *tls_ctx_client; +``` + +Additionally, these two objects were added at exactly the same place in the file, between the `strSubVersion` and `LocalServiceInfo` struct. + +https://github.com/PirateNetwork/pirate/blob/master/src/net.h#L226 + +https://github.com/hushmirror/hush3/blob/dev/src/net.h#L196 + From 7f3c35224652d66d421023c4c9ea9cf40ce744d3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 13 Jan 2022 16:18:53 +0000 Subject: [PATCH 6/8] Update 'mining/solo-mining.md' --- mining/solo-mining.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mining/solo-mining.md b/mining/solo-mining.md index de047a6..4e9c310 100644 --- a/mining/solo-mining.md +++ b/mining/solo-mining.md @@ -51,10 +51,10 @@ First we need to setup the Hush configuration on our computer. 1. Next we start the hush daemon (hushd) at the command line with special options to enable a stratum server. ``` - ./src/hushd -stratum -debug=stratum -stratumallowip=192.168.0.0/16 &> hush-stratum.log + ./src/hushd -stratum -stratumallowip=192.168.0.0/16 &> hush-stratum.log ``` - Substitute your hushd path and your local network appropriately in the above command. + Substitute your hushd path and your local network appropriately in the above command. If you are renting hashrate and do not know the IP addresses that will connect, you can allow any IP address to connect with `-stratumallowip=0.0.0.0/0` 1. Check that the stratum is started by seeing that it is listening on the correct port (default 19031). From 610c4c43ed3bb1780232387ac614c34dd5c446f2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 13 Jan 2022 16:20:37 +0000 Subject: [PATCH 7/8] Update 'mining/solo-mining.md' --- mining/solo-mining.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mining/solo-mining.md b/mining/solo-mining.md index 4e9c310..8d7f79b 100644 --- a/mining/solo-mining.md +++ b/mining/solo-mining.md @@ -54,7 +54,9 @@ First we need to setup the Hush configuration on our computer. ./src/hushd -stratum -stratumallowip=192.168.0.0/16 &> hush-stratum.log ``` - Substitute your hushd path and your local network appropriately in the above command. If you are renting hashrate and do not know the IP addresses that will connect, you can allow any IP address to connect with `-stratumallowip=0.0.0.0/0` + Substitute your hushd path and your local network appropriately in the above command. If you are renting hashrate and do not know the IP addresses that will connect, you can allow any IP address to connect with `-stratumallowip=0.0.0.0/0` . + + If you are having issues you can temporarily add `-debug=stratum` but beware that it will log many lines and you will want to turn it off for normal use. 1. Check that the stratum is started by seeing that it is listening on the correct port (default 19031). From ee49a917f80e8f73aec65516a74d6bd9287e60e0 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 13 Jan 2022 17:21:11 +0000 Subject: [PATCH 8/8] Update 'README.md' --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 97c8018..1ddbaa4 100644 --- a/README.md +++ b/README.md @@ -69,9 +69,10 @@ If you know what you're doing, and want to setup a server to help the Hush commu ![men doing kung-fu](images/hush-kung-fu.gif) -If you need some Hush kung-fu, then you know what to do!!! **This is not for regular users :)** +If you need some Hush kung-fu, then you know what to do!!! **This is not for GUI wallet users :)** - RPC documentation: https://faq.hush.is/rpc/ + - If you use a hush command-line full node, you can look up the docs for every single RPC at the link above - [SDL in the RAW](advanced/sdl-in-the-raw.md): this howto is to setup an SDL server locally if your system is unable to access any online ## Support Links @@ -82,6 +83,5 @@ If you need some Hush kung-fu, then you know what to do!!! **This is not for reg ## How to follow Hush -- [Twitter](https://twitter.com/MyHushTeam) - [Mastodon](https://fosstodon.org/@myhushteam)