Skip to content
This repository has been archived by the owner on May 13, 2022. It is now read-only.

Obfuscate maker bot identities #422

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

nukaa
Copy link

@nukaa nukaa commented Feb 8, 2016

Currently the codebase makes weak attempts to disclose the long term identity of a maker, which somewhat irks me.

These patches make the bot assume a new identity on every IRC reconnect. While the bot can be tracked through published orders, yield scripts must be fixed separately to not leak amount/utxo information. The following patches deal only with revealing stable nym through IRC.

The feature is optional and disabled by default.

I am aware this is a possible tool of sybil attackers. That would happen one way or another, massive sybils must be prevented through effective means - market forces, coin age and privately, F2F established identities - not nicknames and irc hostmasks...

self.reconnect_delay = 30
self.newnyms = False
try:
self.reconnect_delaty = int(config.get("MESSAGING", "reconnect_delay"))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mispelling here, should be reconnect_delay

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed, force-updated.

@@ -116,11 +116,16 @@ def jm_single():
socks5_host = localhost
socks5_port = 9050
#for tor
#host = 6dvj6v5imhny3anf.onion
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the onion host gone? I think this is a mistake.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using hidserv publicly reveals the fact you're using tor, plus makes your bot unstable. Use HS only on irc networks which don't allow direct tor connections. Opionated I know, I'll revert this if you strongly disagree.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made check for .onion when newnym is used (and bail on it).

@chris-belcher
Copy link
Collaborator

Currently the codebase makes weak attempts to disclose the long term identity of a maker,

What do you mean by this? There is no identity attached, JoinMarket does not ask for any proof of ID before running. I assume you mean something else like IP address or bitcoin amounts(?)

Why does your code only create a new tor circuit when the bot disconnects? It seems like an arbitrary time to do it. Would it maybe be better to disconnect and reconnect at random time intervals? I'm not sure cycling to a new tor circuit is helpful when the bitcoin amounts can be correlated very easily. Happy to be proven wrong though.

@nukaa
Copy link
Author

nukaa commented Feb 8, 2016

@chris-belcher
Summary of IRC convo:

This patch is about the nyms of the comms channel, not with regards to JM protocol itself. Current weak attempts is retaining a nickname across reconnects, not changing Tor circuit on reconnect and keeping same orders across reconnect. Meaning the long term identity of a single pseudo nym is eagerly disclosed.

The patch does the opposite of "eager". First, it's much harder for passive adversary to even determine you're using tor (which is now trivial). Second, if he starts probing Tor entry guards he can't (easily) tell the returning bot is the same he's trying to traffic confirm.

Note that advertised orders need some fixing up to make it a bit harder, I'll keep elaborating ideas on irc and mention here if it's something worthwhile.

Regarding traffic confirmation, see https://blog.torproject.org/blog/traffic-correlation-using-netflows and related google searches.

In short, with interactive protocols like IRC it works like this: First, you confirm an entry guard. If you can confirm with high degree of certainty, you issue a court order on said guard to acquire netflow packet dumps. After that, it's a gameover for whomever is behind said guard.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants