269 lines
12 KiB
HTML
269 lines
12 KiB
HTML
{% extends "_layout.html" %}
|
|
{% block title %}I2P Status Notes for 2006-09-12{% endblock %}
|
|
{% block content %}<h3>I2P Status Notes for 2006-09-12</h3>
|
|
<pre>-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA1
|
|
|
|
Hi y'all, here's our *cough* weekly status notes
|
|
|
|
* Index:
|
|
1) 0.6.1.25 and net status
|
|
2) I2PSnark
|
|
3) Syndie (what/why/when)
|
|
4) Syndie crypto questions
|
|
5) ???
|
|
|
|
* 1) 0.6.1.25 and net status
|
|
|
|
The other day we pushed out the 0.6.1.25 release, including the swarm of
|
|
bugfixes accumulated over the past month, as well as zzz's work on
|
|
I2PSnark and Complication's work trying to make our time synchronization
|
|
code a bit more robust. Right now the network seems to be fairly stable,
|
|
though IRC has been a bit rough in the last few days (due to reasons
|
|
unrelated to I2P). With perhaps half of the network upgraded to the
|
|
latest release, tunnel build success rates have not changed much, though
|
|
overall throughput seems to have increased (likely due to an increase in
|
|
the number of people using I2PSnark).
|
|
|
|
* 2) I2PSnark
|
|
|
|
zzz's updates to I2PSnark included protocol optimizations as well as web
|
|
interfaces changes, as described in the history log [1]. There have been
|
|
a few small updates for I2PSnark since the 0.6.1.25 release as well, and
|
|
perhaps zzz can give us an overview of whats up on during the meeting
|
|
tonight.
|
|
|
|
[1] <a rel="nofollow" href="http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/history.txt?rev=HEAD">http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/history.txt?rev=HEAD</a>
|
|
|
|
* 3) Syndie
|
|
|
|
As y'all know, my time has been focused on revamping Syndie, though
|
|
"revamp" may not be the right word. Perhaps you can consider what is
|
|
currently deployed as a "proof of concept", since the new Syndie has
|
|
been redesigned and reimplemented from the ground up, though many
|
|
concepts remain. When I refer to Syndie below, I'm talking about the
|
|
new Syndie.
|
|
|
|
* 3.1) What is Syndie
|
|
|
|
Syndie is, at its most basic level, a system for operating offline
|
|
distributed forums. While its structure leads to a large number of
|
|
different configurations, most needs will be met by selecting one of
|
|
the options from each of the following three criteria:
|
|
- Forum types:
|
|
- Single author (typical blog)
|
|
- Multiple authors (multiauthor blog)**
|
|
- Open (newsgroups, though restrictions may be included so that only
|
|
authorized** users can post new threads, while anyone can comment on
|
|
those new threads)
|
|
- Visibility:
|
|
- Anyone can read anything
|
|
- Only authorized* people can read posts, but some metadata is exposed
|
|
- Only authorized* people can read posts, or even know who is posting
|
|
- Only authorized* people can read posts, and no one knows who is
|
|
posting
|
|
- Comments/replies:
|
|
- Anyone can comment or send private replies to the author/forum
|
|
owner
|
|
- Only authorized** people can comment, and anyone can send private
|
|
replies
|
|
- No one can comment, but anyone can send private replies
|
|
- No one can comment, and no one can send private replies
|
|
|
|
* reading is authorized by giving people the symmetric key or passphrase
|
|
to decrypt the post. Alternately, the post may include a publicly
|
|
visible prompt, where the correct answer serves to generate the
|
|
correct decryption key.
|
|
** posting, updating, and/or commenting is authorized by providing those
|
|
users with asymmetric private keys to sign the posts with, where the
|
|
corresponding public key is included in the forum's metadata as
|
|
authorized to post, manage, or comment on the forum. Alternately, the
|
|
signing public keys of individual authorized users may be listed in
|
|
the medtata.
|
|
|
|
Individual posts may contain many different elements:
|
|
- Any number of pages, with out of band data for each page specifying
|
|
the content type, language, etc. Any formatting may be used, as its
|
|
up to the client application to render the content safely - plain text
|
|
must be supported, and clients that can should support HTML.
|
|
- Any number of attachments (again, with out of band data describing the
|
|
attachment)
|
|
- A small avatar for the post (but if not specified, the author's
|
|
default avatar is used)
|
|
- A set of references to other posts, forums, archives, URLs, etc (which
|
|
may include the keys necessary to post, manage, or read the referenced
|
|
forums)
|
|
|
|
On the whole, Syndie works at the *content layer* - individual posts are
|
|
contained in encrypted zip files, and participating in the forum means
|
|
simply sharing these files. There are no dependencies upon how the files
|
|
are transferred (over I2P, Tor, Freenet, gnutella, bittorrent, RSS,
|
|
usenet, email), but simple aggregation and distribution tools will be
|
|
bundled with the standard Syndie release.
|
|
|
|
Interaction with the Syndie content will occur in several ways. First,
|
|
there is a scriptable text based interface, allowing basic command line
|
|
and interactive reading from, writing to, managing, and synchronizing
|
|
the forums. For instance, the following is a simple script to generate
|
|
a new "message of the day" post -
|
|
|
|
login
|
|
menu post
|
|
create --channel 0000000000000000000000000000000000000000
|
|
addpage --in /etc/motd --content-type text/plain
|
|
addattachment --in ~/webcam.png --content-type image/png
|
|
listauthkeys --authorizedOnly true
|
|
authenticate 0
|
|
authorize 0
|
|
set --subject "Today's MOTD"
|
|
set --publicTags motd
|
|
execute
|
|
exit
|
|
|
|
Simply pipe that through the syndie executable and the deed is done:
|
|
cat motd-script | ./syndie > syndie.log
|
|
|
|
Additionally, there is work going on for a graphical Syndie interface,
|
|
which includes the safe rendering of plain text and HTML pages (of
|
|
course, with support for transparent integration with Syndie's
|
|
features).
|
|
|
|
Applications based on the old Syndie's "sucker" code will enable the
|
|
scraping and rewriting of normal web pages and web sites so that they
|
|
can be used as single or multipage Syndie posts, including images and
|
|
other resources as attachments.
|
|
|
|
Down the line, firefox/mozilla plugins are planned to both detect and
|
|
import Syndie formatted files and Syndie references, as well as notify
|
|
the local Syndie GUI that a particular forum, topic, tag, author, or
|
|
search result should be brought into focus.
|
|
|
|
Of course, since Syndie is, at its core, a content layer with a defined
|
|
file format and cryptographic algorithms, other applications or
|
|
alternate implementations will probably be brought forward over time.
|
|
|
|
* 3.2) Why does Syndie matter?
|
|
|
|
I've heard several people ask over the last few months why I'm working
|
|
on a forum/blogging tool - what does that have to do with providing
|
|
strong anonymity?
|
|
|
|
The answer: *everything*.
|
|
|
|
To briefly summarize:
|
|
- Syndie's design as an anonymity-sensitive client application carefully
|
|
avoids the intricate data sensitivity problems that nearly every
|
|
application not built with anonymity in mind does not.
|
|
- By operating on the content layer, Syndie does not depend upon the
|
|
performance or reliability of distributed networks like I2P, Tor, or
|
|
Freenet, though it can exploit them where appropriate.
|
|
- By doing so, it can operate fully with small, ad-hoc mechanisms for
|
|
content distribution - mechanisms which may not be worth the effort
|
|
for powerful adversaries to counteract (since the 'payoff' of busting
|
|
just a few dozen people will likely exceed the cost of mounting the
|
|
attacks)
|
|
- This implies that Syndie will be useful even without a few million
|
|
people using it - small unrelated groups of people should set up their
|
|
own private Syndie distribution scheme without requiring any
|
|
interaction with or even awareness by any other groups.
|
|
- Since Syndie does not rely upon real-time interaction, it can even
|
|
make use of high latency anonymity systems and techniques to avoid the
|
|
attacks that all low latency systems are vulnerable to (such as
|
|
passive intersection attacks, passive and active timing attacks, and
|
|
active blending attacks).
|
|
|
|
On the whole, its my view that Syndie is even more important to I2P's
|
|
core mission (providing strong anonymity to those who need it) than even
|
|
the router. Its not the end-all, be-all, but its a key step.
|
|
|
|
* 3.3) When can we use Syndie?
|
|
|
|
While a lot of work has been completed (including nearly all of the
|
|
text interface and a good portion of the GUI), work still remains. The
|
|
first Syndie release will include the following baseline functionality:
|
|
|
|
- Scriptable text interface, packaged up as a typical java application,
|
|
or buildable with a modern GCJ
|
|
- Support for all forum types, replies, comments, etc.
|
|
- Manual syndication, transferring .snd files.
|
|
- HTTP syndication, including simple CGI scripts to operate archives,
|
|
controllable through the text interface.
|
|
- Specs for the file formats, encryption algorithms, and database
|
|
schema.
|
|
|
|
The criteria I'm using for pushing that out will be "fully functional".
|
|
Joe Sixpack isn't going to mess around with a text-based app, but I'm
|
|
hoping some geeks will.
|
|
|
|
Subsequent releases will improve upon Syndie's capabilities across
|
|
several dimensions:
|
|
- User interface:
|
|
- SWT-based GUI
|
|
- Web browser plugins
|
|
- Web scrape text UI (pulling in and rewriting pages)
|
|
- IMAP/POP3/NNTP reading interface
|
|
- Content support
|
|
- Plain text
|
|
- HTML (safe rendering within the GUI, not in a browser)
|
|
- BBCode (?)
|
|
- Syndication
|
|
- Feedspace, Feedtree, and other low-latency synchronization tools
|
|
- Freenet (storing .snd files at CHK@s and archives referencing
|
|
the .snd files at SSK@s and USK@s)
|
|
- Email (post through SMTP/mixmaster/mixminion, read through
|
|
procmail/etc)
|
|
- Usenet (post through NNTP or remailers, read through (proxied)
|
|
NNTP)
|
|
- Full text search with Lucene integration
|
|
- Extension of HSQLDB for full database encryption
|
|
- Additional archive management heuristics
|
|
|
|
What comes out when depends on when things are done.
|
|
|
|
* 4) Open questions for Syndie
|
|
|
|
Right now, Syndie has been implemented with I2P's standard crypto
|
|
primitives - SHA256, AES256/CBC, ElGamal2048, DSA. That last one is the
|
|
odd man out, however, since it uses 1024bit public keys and depends upon
|
|
(the rapidly weakening) SHA1. One murmur I've heard from the field has
|
|
been the augmentation of DSA with SHA256, and while that's doable (though
|
|
not yet standardized), it only offers 1024bit public keys.
|
|
|
|
Since Syndie hasn't been pushed out into the wild yet, and there's no
|
|
worry about backwards compatability, we have the luxury of swapping the
|
|
crypto primitives around. One line of thought is to opt for ElGamal2048
|
|
or RSA2048 signatures instead of DSA, while another line of thought is to
|
|
look towards ECC (with ECDSA signatures and ECIES asym encryption),
|
|
perhaps at the 256bit or 521bit security levels (paralleling 128bit and
|
|
256bit symmetric key sizes, respectively).
|
|
|
|
As for the patent issues regarding ECC, those seem to be relevent only
|
|
for particular optimizations (point compression) and algorithms we dont
|
|
need (EC MQV). There isn't much out there in terms of Java support,
|
|
though the bouncycastle lib seems to has some code. However, it probably
|
|
wouldn't be much trouble to add tiny wrappers to libtomcrypt, openssl, or
|
|
crypto++ either, like we did for libGMP (giving us jbigi).
|
|
|
|
Any thoughts on that?
|
|
|
|
* 5) ???
|
|
|
|
There's a lot to digest up there, which is why (on cervantes' suggestion)
|
|
I'm sending out these status notes so early. If you've got any comments,
|
|
questions, concerns, or suggestions, please swing on by #i2p tonight at
|
|
8pm UTC on irc.freenode.net/irc.postman.i2p/irc.freshcoffee.i2p for our
|
|
*cough* weekly meeting!
|
|
|
|
=jr
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: GnuPG v1.4.3 (GNU/Linux)
|
|
|
|
iD8DBQFFBpC0zgi8JTPcjUkRAoPWAKCBhSJg6NOc0SY4xP/LuVRM6PxzZwCeIe9l
|
|
esxfTWz6qhtpyTUqsmoNlB4=
|
|
=zCOG
|
|
-----END PGP SIGNATURE-----
|
|
|
|
|
|
</pre>
|
|
{% endblock %}
|