[nym3-devel] Starting?

Laurent Fousse laurent@komite.net
Sun, 2 May 2004 12:20:25 +0200


--0OAP2g/MAC+5xKAE
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

* Jean-Ren=E9 Reinhard [2004-05-01]:
> Hi,
>=20
> I think that it would be reasonnable to develop the client and the
> server in parallel, it would be easier for testing.

I agree.

> +++++++++++++
> Let's start with the server:
>=20
> what he has to do :
>=20
> _maintain nym accounts
>  [User adjustable options]
>       - Identity public key of the nymholder
>       - Encryption public key of the nymholder
>       - A filtering policy (described below)

Maybe we can leave the filtering policy for the moment, and think of a
way to implement this later?

>       - A maximum unencrypted synopsis time, in 30-minute
>         increments. (described below)

=46rom the spec I don't see the use of the synopsis latency. For what
purpose would the nymserver want to keep synopsis in clear for some
amount of time?

>  [Administrator adjustable options]
>       - Maximum number of queued emails
>       - Maximum email size
>       - Maximum disk space used
>=20
> the question whether it is good or not to have a lot of User
> adjustable options has been raised.

My first suggestion is to drop the unencrypted synopsis time.

> In addition to these data, for each nym we have to store :
>       - A set of emails, each consisting of:
>             An encrypted synopsis [XXX which can remain unencrypted
>             during a certain amount of time, specified by the user
>             XXX]=20

As I already said, I don't see the point.

>			  An encrypted emails
>=20
> [XXX what kind of structure do we use for this? a mbox-like one? or
> files stored in a rep? XXX]

I like maildir-like format. One email per file is simple to use and
saves us the trouble of mbox and escaping special characters.

> Each message also has:
>             A 32-byte message identifier
>             A 'sent' tristate: "Nothing sent", "Synopsis-sent",
>             "Sent-In-Full".  A time of receipt.

I'd suggest we keep each message in a seperate file, along with its
synopsis, and have a database (simple DB would be enough) where the
keys would be the 32-byte identifier and the value would be the tuple
of the 'sent' tristate, time of receipt and name of the file storing
the mail.

Do we really need 32 _bytes_ ? 32 bits should be more than enough for
an identifier.

>       - A set of SURBs
> [XXX idem? XXX]

Each one in its file stored in a directory. For the moment the
directory structure would look like :

/nym1/msgs/msg1
		   msg1.syn
		   msg2
		   msg2.syn
		   ...
	 /subs/1
		   2
		   ...
	 /msgs.db
	   |
	   0xbeef -> (msg1, "Nothing sent", 1083491046)
	   0x4217 -> (msg2, "Synopsis sent", 1083491278)
	 =20

> _process incoming messages, that's to say=20
>    _mail from a nym to a receiver (special case if the receiver is a
>    nym on the same server?)

It means extra work: what is the benefit ?

> the type of the control messages are described in nym-spec.txt. I
> think it would be better to implement the CREATE control message
> first. (in other words the creation of an account on the server),
> and then proceed from there.

Good idea. How do we specify the challenge protocol ? The type I
nymserver has a simple protocol :

 - generate a random string,
 - wait for any message contenaing this string and mark the nym as
   created when it receives it.

My suggestion for the challenge response protocol :

 - in response to a CREATE request, the nymserver generates a random
   string which is included in the CREATED response.
 - in response to a CREATE2 request containing this random string as
   challenge response, mark the nymm as created and reply with a
   CREATED response with empty challenge.

We *could* make the challenge protocol more complicated, but since
control messages to the nymserver are already signed, and
surbs-response are encrypted, I'm not sure we need to.

> ++++++++++++++++++
> What the client should do :
>=20
> _send and receive control messages to/from the nymserver.
> _provide the server with surbs
> _under heavy load retrive synopses explicitely, present the list of
> retrievable message to the user, request that the nymserv sends
> message to the nymholder or deletes messages
> _if sending configuration cpontrol message (eg to change the public
> key of the nymholder) keep the message until it has been aknowledged

=46rom the synopsis/email retrieval point of view, I see the nymclient
as one improved newsreader.

> ++++++++++++++++++
> programming stuff
> what module will we use for manipulation of files, directories...
> I already know unix module, which seems to be compatible with
> Windows as long as we don't use fork and kill :=20
>=20
> http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/book-ora166.html
>=20
> but you may know no a better one?

Did I mention the fact that I'm really an OCaml AMATEUR?

--0OAP2g/MAC+5xKAE
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFAlMtpRoAVF6FpbSsRAi7hAJ9CEQT4fRjlHUQ1Du9qQn1gg02s/wCgkpu6
cfmzBkBKLRJb6451UgZB7to=
=6TcF
-----END PGP SIGNATURE-----

--0OAP2g/MAC+5xKAE--