i2p.i2p-bote icon indicating copy to clipboard operation
i2p.i2p-bote copied to clipboard

Decouple Identities (Trac #1359)

Open str4d opened this issue 7 years ago • 8 comments

Since I2P-Bote offers you to have different identities, it should make sure those remain unlinkable. Currently both with manual and automatic mail checking all identities are checked more or less at the same time from the same dest.

To do:

  1. per-identity settings for mail checking (automatic checking on or of, and individual check intervall, plus randomize the times a bit.

  2. per-id manual checking, and a "check all"

  3. if more than one tunnel each way is being used anyway, then why not have them use different dests and thus to the outside world have different virtual bote nodes, and let the user assign the bote id's to tunnel dests being used. (those can be simply called A and B and be in fact transient and change at each startup, it's just about the grouping of ids, in case he has more than dests, but too many id's only slow it down so let's focus on two or three id's only. two could use one of two simultaneously operating dests and a third one could have auto mail check deactivate and only be used when the others are deactivated). Receipt confirmations should also be pulled via the respective dest then.

  4. per-identity settings for receipt confirmation, number of relays, and delay per hop, even per-hop different delay intervals.

Migrated from https://trac.i2p2.de/ticket/1359

{
    "status": "accepted", 
    "changetime": "2015-08-05T06:51:10", 
    "description": "Since I2P-Bote offers you to have different identities, it should make sure those remain unlinkable.\nCurrently both with manual and automatic mail checking all identities are checked more or less at the same time from the same dest.\n\nTo do:\n1) per-identity settings for mail checking (automatic checking on or of, and individual check intervall, plus randomize the times a bit. \n\n2) per-id manual checking, and a \"check all\"\n\n3) if more than one tunnel each way is being used anyway, then why not have them use different dests and thus to the outside world have different virtual bote nodes, and let the user assign the bote id's to tunnel dests being used. (those can be simply called A and B and be in fact transient and change at each startup, it's just about the grouping of ids, in case he has more than dests, but too many id's only slow it down so let's focus on two or three id's only. two could use one of two simultaneously operating dests and a third one could have auto mail check deactivate and only be used when the others are deactivated).\nReceipt confirmations should also be pulled via the respective dest then.\n\n\n2) per-identity settings for receipt confirmation, number of relays, and delay per hop, even per-hop different delay intervals.", 
    "reporter": "user", 
    "cc": "", 
    "resolution": "", 
    "_ts": "1438757470347084", 
    "component": "apps/plugins", 
    "summary": "I2P-Bote, decouple Identities", 
    "priority": "minor", 
    "keywords": "I2P-Bote privacy usability", 
    "version": "0.9.14.1", 
    "parents": "", 
    "time": "2014-08-24T23:01:11", 
    "milestone": "eventually", 
    "owner": "str4d", 
    "type": "enhancement"
}

str4d avatar Apr 16 '17 23:04 str4d

Trac update at 20140826T02:12:45: somewon commented:

This is a really good point, and I would say it's fairly important. I think your suggestions on this bug are good ones.

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20140826T08:30:52: user commented:

in the per-identity settings there could be a check for including this identity in the "check all" action

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20140826T09:50:45: user commented:

Add a subticket #25.

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20140826T09:51:08: user commented:

Add a subticket #26.

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20150110T04:15:13: str4d changed keywords from "I2P-Bote, identities, linking" to "I2P-Bote privacy"

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20150205T04:53:00: str4d commented:

Add a subticket #38.

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20150314T19:00:23:

  • user changed _comment0 from:

This is what I envision here: There should be global settings like now, such that the per-identity and per-hop settings default to those. "These are your global settings. All your identites will default to those. If you want to set specific values, please do so under indentities"

Then one settings page per identity:

  1. checkbox: "Include this identity in global manual mail checking (check mail button)"
  2. checkbox: "Automatically check for mail every [ ] minutes (requires ghost mode in case a password is set)" 3)* "check intervall randomization factor: [{{{factor}}}] (0 means exact times, 50 means ≈ +-50%)"
  3. checkbox: "Check delivery status of e-mails sent by this identity (receipt confirmations)?"
  4. "Use relays when sending a mail: [ {{{number of relays}}} ]", changing this setting adds {{{number of relays}}} "Delay / wait time on relay hop #n: Between [ ] and [ ] minutes" options, pre-filled with default per-hop delay min and max from settings page.

In short: The entire settings page should be per-identity, except for the theme. Unless you plan to support logging into the different identities with different passwords and themes to distinguish them, but maybe that's a bit out of reach for now. No need for IMAP and SMTP settings to be per identity.

*Or if you prefer, in 2) you let the user pick {{{min}}} and {{{max}}}. For determining the next check time you first obtain two values {{{helpFactor1}}} and {{{helpFactor2}}} of a Gaussian random variable centered around the randomization factor {{{factor}}}, set {{{finalMin := (1-helpFactor1)*checkInterval}}} and {{{finalMax := (1+helpFactor2)*checkInterval}}} (both helpFactors can be discarded now) Then choose {{{wait}}} from a uniform distribution between {{{[finalMin, finalMax]}}}. (both values can be discarded now) Finally, you get the {{{scheduledTime = timeLastCheck + wait}}}.

(Or, with user-set {{{min}}} and {{{max}}} values: Obtain {{{factor}}} from {{{factor := (max-min)/(max+min)}}} and {{{checkInterval := (max+min)/2}}}, then proceed as above. Heck, if you want, you can even provide both options and let the user choose which input method is more intuitive for him, giving the average and a randomization factor, or giving min and max.)

to:

1426360206732277

  • user changed _comment1 from:

This is what I envision here: There should be global settings like now, such that the per-identity and per-hop settings default to those. "These are your global settings. All your identites will default to those. If you want to set specific values, please do so under indentities"

Then one settings page per identity:

  1. checkbox: "Include this identity in global manual mail checking (check mail button)"
  2. checkbox: "Automatically check for mail every [ {{{checkInterval}}} ] minutes (requires ghost mode if a password is set)" 3)* "check intervall randomization factor: [{{{factor}}}] (0 means exact times, 50 means ≈ +-50%)"
  3. checkbox: "Check delivery status of e-mails sent by this identity (receipt confirmations)?"
  4. "Use relays when sending a mail: [ {{{number of relays}}} ]", changing this setting adds {{{number of relays}}} "Delay / wait time on relay hop #n: Between [ ] and [ ] minutes" options, pre-filled with default per-hop delay min and max from settings page.

In short: The entire settings page should be per-identity, except for the theme. Unless you plan to support logging into the different identities with different passwords and themes to distinguish them, but maybe that's a bit out of reach for now. No need for IMAP and SMTP settings to be per identity.

*Or if you prefer, in 2) you let the user pick {{{min}}} and {{{max}}}. For determining the next check time you first obtain two values {{{helpFactor1}}} and {{{helpFactor2}}} of a Gaussian random variable centered around the randomization factor {{{factor}}}, set {{{finalMin := (1-helpFactor1)*checkInterval}}} and {{{finalMax := (1+helpFactor2)*checkInterval}}} (both helpFactors can be discarded now) (Assert that {{{finalMin <= finalMax}}}) Then choose {{{wait}}} from a uniform distribution between {{{[finalMin, finalMax]}}}. (both values can be discarded now) Finally, you get the {{{scheduledTime = timeLastCheck + wait}}}.

(Or, with user-set {{{min}}} and {{{max}}} values: Obtain {{{factor}}} from {{{factor := (max-min)/(max+min)}}} and {{{checkInterval := (max+min)/2}}}, then proceed as above. Heck, if you want, you can even provide both options and let the user choose which input method is more intuitive for him, giving the average and a randomization factor, or giving min and max. And the very same calculations can be used to determine the exact wait time per relay which is sent to the respective Bote relay node)

to:

1426363153600743

  • user changed _comment2 from:

This is what I envision here: There should be global settings like now, such that the per-identity and per-hop settings default to those. "These are your global settings. All your identites will default to those. If you want to set specific values, please do so under indentities"

Then one settings page per identity:

  1. checkbox: "Include this identity in global manual mail checking (check mail button)"
  2. checkbox: "Automatically check for mail every [ {{{checkInterval}}} ] minutes (requires ghost mode if a password is set)" 3)* "check intervall randomization factor: [{{{factor}}}] (0 means exact times, 50 means ≈ +-50%)"
  3. checkbox: "Check delivery status of e-mails sent by this identity (receipt confirmations)?"
  4. "Use relays when sending a mail: [ {{{number of relays}}} ]", changing this setting adds {{{number of relays}}} "Delay / wait time on relay hop #n: Between [ ] and [ ] minutes" options, pre-filled with default per-hop delay min and max from settings page.

In short: The entire settings page should be per-identity, except for the theme. Unless you plan to support logging into the different identities with different passwords and themes to distinguish them, but maybe that's a bit out of reach for now. No need for IMAP and SMTP settings to be per identity.

*Or if you prefer, in 2) you let the user pick {{{min}}} and {{{max}}}.

The delete messages sould be per-identity too!! (Needed if later tunnel pooling is done)

to:

1426365872512289

  • user commented:

This is what I envision here: There should be global settings like now, such that the per-identity and per-hop settings default to those. "These are your global settings. All your identites will default to those. If you want to set specific values, please do so under indentities"

Then one settings page per identity:

  1. checkbox: "Include this identity in global manual mail checking (check mail button)"
  2. checkbox: "Automatically check for mail every [ checkInterval ] minutes (requires ghost mode if a password is set)" 3)* "check intervall randomization factor: [factor] (0 means exact times, 50 means ≈ +-50%)"
  3. checkbox: "Check delivery status of e-mails sent by this identity (receipt confirmations)?"
  4. "Use relays when sending a mail: [ number of relays ]", changing this setting adds number of relays "Delay / wait time on relay hop #n: Between [ ] and [ ] minutes" options, pre-filled with default per-hop delay min and max from settings page.

In short: The entire settings page should be per-identity, except for the theme. Unless you plan to support logging into the different identities with different passwords and themes to distinguish them, but maybe that's a bit out of reach for now. No need for IMAP and SMTP settings to be per identity.

*Or if you prefer, in 2) you let the user pick min and max. (And assert that min <= max)

The delete messages sould be per-identity too!! (Needed if later tunnel pooling is done)

str4d avatar Apr 17 '17 00:04 str4d

Trac update at 20150805T06:51:10:

  • str4d commented:

Replying to [comment:7 user]:

  1. checkbox: "Include this identity in global manual mail checking (check mail button)"

Opt-out from global checking implemented in 6ffbe5b58daf9f95ccd51f61740b27289ac63da1 and 1fca34b5c24bed51460a3cae042dad3a9df04c7e. Manual check mail buttons implemented in 5c72195ec5458b5620d7fcec128957e7b2bb6dde.

  1. checkbox: "Automatically check for mail every [ checkInterval ] minutes (requires ghost mode if a password is set)" 3)* "check intervall randomization factor: [factor] (0 means exact times, 50 means ≈ +-50%)"

TBC.

  1. checkbox: "Check delivery status of e-mails sent by this identity (receipt confirmations)?"

Delivery status is checked automatically by observing delete packet requests being propagated throughout the DHT. IIRC there's no active checking for these, and therefore nothing to decouple.

  1. "Use relays when sending a mail: [ number of relays ]", changing this setting adds number of relays "Delay / wait time on relay hop #n: Between [ ] and [ ] minutes" options, pre-filled with default per-hop delay min and max from settings page.

See #38.

  • str4d changed keywords from "I2P-Bote privacy" to "I2P-Bote privacy usability"
  • str4d changed milestone from "" to "eventually"
  • str4d changed owner from "HungryHobo" to "str4d"
  • str4d changed status from "new" to "accepted"

str4d avatar Apr 17 '17 00:04 str4d