As some request hit me to alter an eepsite destination (which I will decline), I thought about this and possibly found a way how to support altering destinations in hosts.txt from a global perspective.
Let's call the old destination "wrong" and the new destination "right".
To support replacing a wrong destination with the right one we need support for this in two situations:
First, the wrong destination must be removed from hosts.txt.
Second, the addressbook must not re-learn such wrong destinations.
This way hosts.txt would be cleaned from the wrong destination and able to learn a right one.
So, what do we need to remove a wrong destination from hosts.txt?
We need a list, which contains all the wrong (dead, revoked, whatever) destinations. This list must be supported in addressbook, such that this list is read and no destination which is in this list can be learned again. Also all destinations which are in this list and in hosts.txt are removed from hosts.txt (probably by addressbook, too).
Also addressbook can learn this list like it is able to learn hosts.txt. The only difference between hosts.txt and - say - revocations.txt is, that a destination (name) can be listed multiply in the revocation (with different keys), as there can be more than one revocation.
There is a single last question: How are revocations authorized. The answer is the same as with hosts.txt: There is no such authorization. It is learned from sources which you trust like hosts.txt (which initially is: none).
This leads to a last thing: The revocations.txt file should be accompanied with another file, say "protect.txt", which contains some "protected" destinations, which inhibits the revoke of these destinations. This file is NOT updated by addressbook, but is, instead, part of the router distribution. It should be accompanied by a second - manually editable - file named "protect.local.txt", which does the same with manually entered destinations.
Perhaps my proposal seems a little bit weird. However with a proper revocations.txt we could get rid of all those dead destinations in the hosts.txt, so there would be a way to clean up things.
Think of the future. Think when we have thousands of users running routers.
From a security perspective hosts.txt is the right choice, so keep it as it is and DO NOT LET US REPLACE IT BY SOMETHING LIKE A DNS LOOKUP. First hosts.txt should be small (as distributed). Only people who know what they are doing (around 1% or less of the I2P users!) will let the router "learn" new destinations using the addressbook. 99% (or more) will stay with the initial hosts.txt.
The hosts.txt therefor must be populated using some - perhaps to be defined - automated lookup, the first time the user looks up an unknown destination. Not via addresshelper, this is bad, as it is not comfortable enough (one click more is one click too much). So there must be a way to "autolearn destinations on demand". However this will not learn ALL addresses, only the single one which is looked up.
Additionally, most of the eepsite owners will not be able to read documentation (as 99.99% of all Internet users are no more able to read, they are only able to skim through information, but do not take notice of anything else then what they are exactly looking for). So they will clutter the I2P namespace with destinations, which will vanish, because they forgot to save their key before some reinstall (like harddrive failure). Even if they cannot "reclaim" their old name then, still hosts.txt will start to fill up with zillions of unused names.
There must be some automated way to clean this up. For "normal" users (who are not operating any eepsite), this can be done by telling them to completely re-install their router, as this will re-install a clean hosts.txt and re-learn all addresses. For "paranoied" users (and there will be some) we need a better way. This is, to revoke dead destinations (for example which were not seen for over a year) such that they can keep their hosts.txt file (note that these people WILL read documentation and follow it, but only up to exactly the point where they have reached their goal, then they will immediately loose interest and will forget how they have done it. This is normal nowadays. Likewise normal is, that they will trust ANY source which tells them about it, as long as this source does not look fake. This is why phishing works quite well. We, who never will be fooled like this, are NOT THE NORMAL PEOPLE, we are simply freaks, nerds and geeks, period. However I do not want to have I2P only for freaks, nerds and geeks. It must reach the NORMAL people, and it is our task to prepare it for them).
This is where the revocations.txt file comes into play. However we must be prepared to protect live destinations. Else some morons may try to censor some destination using revocations.txt (remember: People do not read. However if you tell them a nice trick to speed up their I2P, they will blindly follow. Even if that trick is to fool them to update their revocations.txt file using addressbook).
The protect.txt file is just there to be able to quickly react on such an attack - just bring out a new router version which is accompanied by the destination under attack using a modified protect.txt file. As people then will blindly follow update protocol, as Microsoft told them that this is good, you know? (So keep it like Microsoft does: Download the I2P update in the background and install it on the next restart by default. Leave it to geeks like us to disable this feature. Else 99% of the future users will never do updates, as they will never look at the update warning, as they are happy with the eeproxy, which never told them to do updates. "Uh, there is an I2P router console? Looks geeky. Ah, I ignore it, as it works anyway!").
The truly paranoied (those, wo not even trust the I2P developer team. This are the ones, who not even trust their toilet, because somebody might have tapped their waste water lines) can copy their hosts.txt file onto protect.local.txt (or whatever), to disable revocations of any learned destinations.
However it becomes simpler for them, too, as they need not to edit hosts.txt, they can edit their protect.local.txt file. Which is less error prone, as errors in this file does not harm anything as bad as, for example, you loose your hosts.txt file due to some edit error (like the save saved a 0 byte file due to harddrive issues like drive full).
Sorry to stress this (perhaps to stress this again, as it might be a FAQ). However as such a request to change a destination hit me, I think, this will not be the last time, it will become more frequent. Yes, there now is a new FAQ entry in my inProxy for this. However, as I said, people do not read, and that's normal nowadays.
See also:
- http://inproxy.tino.i2p/faq.php#destination
- http://i2p.to/faq.php#destination
-Tino
PS: And if this is a FAQ - well - I am normal then, in that I cannot read, likewise.
Last edited Sun, 26 Apr 2009, 3:19am by tino