From a9802eb6a7b109f55591dbacb6ca385ab61d6eec Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 2 Sep 2014 14:23:06 +0000 Subject: [PATCH] NetDB: Encrypt RI lookups and request encrypted reply on faster boxes, as a test, to prevent scraping by OBEPs and IBGWs --- .../networkdb/kademlia/IterativeSearchJob.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java index 023b6a8731..f79642dae4 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java @@ -13,9 +13,9 @@ import java.util.concurrent.ConcurrentHashMap; import net.i2p.data.Base64; import net.i2p.data.DataHelper; import net.i2p.data.Hash; -import net.i2p.data.router.RouterInfo; import net.i2p.data.i2np.DatabaseLookupMessage; import net.i2p.data.i2np.I2NPMessage; +import net.i2p.data.router.RouterInfo; import net.i2p.kademlia.KBucketSet; import net.i2p.kademlia.XORComparator; import net.i2p.router.CommSystemFacade; @@ -28,6 +28,8 @@ import net.i2p.router.TunnelInfo; import net.i2p.router.TunnelManagerFacade; import net.i2p.router.util.RandomIterator; import net.i2p.util.Log; +import net.i2p.util.NativeBigInteger; +import net.i2p.util.SystemVersion; /** * A traditional Kademlia search that continues to search @@ -88,9 +90,14 @@ class IterativeSearchJob extends FloodSearchJob { */ private static final int MAX_CONCURRENT = 1; - /** testing */ private static final String PROP_ENCRYPT_RI = "router.encryptRouterLookups"; + /** only on fast boxes, for now */ + private static final boolean DEFAULT_ENCRYPT_RI = + SystemVersion.isX86() && SystemVersion.is64Bit() && + !SystemVersion.isApache() && !SystemVersion.isGNU() && + NativeBigInteger.isNative(); + /** * Lookup using exploratory tunnels */ @@ -315,7 +322,7 @@ class IterativeSearchJob extends FloodSearchJob { _sentTime.put(peer, Long.valueOf(now)); I2NPMessage outMsg = null; - if (_isLease || getContext().getBooleanProperty(PROP_ENCRYPT_RI)) { + if (_isLease || getContext().getProperty(PROP_ENCRYPT_RI, DEFAULT_ENCRYPT_RI)) { // Full ElG is fairly expensive so only do it for LS lookups // if we have the ff RI, garlic encrypt it RouterInfo ri = getContext().netDb().lookupRouterInfoLocally(peer);