On Thursday 23 May 2013 13:16:37 Matthew Toseland wrote: > Okay, so the short answer is: > > We have short invites and long invites. > > Short invite: > - A hexadecimal string of say 26 digits. > - The first 10 are an IP address and port number, for a node. This is either > the inviter, or one of its friends. > - If it's one of its friends, then we need to send the rest of the code to > the friend when we create the invite. > - The rest of the string is a one-time secret which allows the invitee to > connect and exchange full noderefs. > - If we are already on Freenet, we look up the full secret as a KSK. This > will provide the inviter's full noderef, and a new KSK to upload our noderef > to. This allows us to connect more securely (since it lets us authenticate > the inviter) and more robustly (since we can get connected even if we can't > connect to the IP address). > > Short invites are sent by text message or IM, exchanged over the phone etc. > > A long invite includes: > - Full noderef for the inviting node. > - Full noderef for all its friends. > - A one-time code serving the same purpose as the above, which is broadcast > to ALL our friends when the invite is created. > - Signature on all of the above. > - Hence we can immediately connect, even if the person who invited us is > offline. > > A long invite is a largish file, so can be used by geeks who already have GPG > set up etc, but mostly it will be included with invites on USB sticks which > also include the software, or invites on an HTTPS website. > > With either kind of invite, there is an optional out-of-band verification > stage: If either party requests it, the connection will enter an "unverified" > state, where it is connected but not in use, until it has been verified, by > either checking fingerprints or a password-based authentication scheme (one > party gives the other party a password over the phone and then the nodes do a > protocol that proves that they both have it, thus authenticating both). This > is for the really paranoid, to check that there hasn't been a > man-in-the-middle attack. > > All of our use cases reduce to these two options: > > Smartphone setup: Exchange a long invite (or full noderefs). > > Geeks: Exchange a long invite. > > Short code to be exchanged by insecure IM: Short invite. (With or without > Freenet installed!) > > USB stick: Long invite with installers. > > Printed one-way invite: Short invite. > > HTTPS website: Long invite with installers. > Draft of the "invite a user to freenet" wizard, and misc notes/explanation:
http://piratepad.net/F6VIuHpyKH Invite a friend to Freenet or connect to a friend already on Freenet Is your friend already on Freenet? Yes. -> "My friend is on Freenet already" No/Maybe. -> "My friend is not on Freenet" Set up smartphone app. -> Explains what to download, produces QR code to set up connection to app. App downloads invites when in contact with main node over wifi. As phones are insecure, added contacts must be verified on the main node. My friend is on Freenet already: Your friend might be connected to one of your friends already. [ List of known friends of friends ] (Out of band verification will be required as the names may be bogus!) If not found, [ Generate an invite ] -> short code. (Freenet-only, no IP address, secure exchange over KSKs, like FastRefer) My friend is not on Freenet: My friend can download Freenet, or already has downloaded Freenet, but might not be connected to anyone. -> Create a short code. I want to send the Freenet software to my friend: - Do you want to give your friend a USB key containing the Freenet software, or do you want to send them a link to download it from (your node / a friend - depends on connectivity)? -> Create a USB key. -> Create a link to download from. USB key: - Optionally encrypted with a password. Short code: (Parameter determined by wizard: Freenet-only or including IP address?) (Checkbox: Force password check; this is recommended if you are concerned that the invite might be seen or stolen) Just show it so user can copy it? Copy to clipboard button? Guess not from web browser? Print it? As text? As a QR code? After the event: - If installing from a bundle, Freenet will detect that there is a "long invite" included, and use it to connect. This will affect the questions in the first time wizard. - Password verification, probably by phone, if either side requests it. Invites vs noderefs: Both short codes and long codes are "invites". Invites are issued by one node, and include a one-time, time limited code which allows a node to connect. Noderefs on the other hand must be exchanged in *both* directions. Noderefs should only be shown in advanced mode; most people should use invites.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Devl mailing list [email protected] https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
