Created new page at Nym Servers and Pseudonymous Emails
Ok I’ll add the part about sending choices in the introduction, to give the user the whole idea of how it works.
Thanks!
Sure. I didn’t know if some of the operations like signing and encrypting simultaneously were supported by the GUI so I put some of this with some of that. Your format of the instructions would be the proper way so feel free to add both.
I tried to use KGpg where I could, but there were some things that I could not find out how to do. I never used KGpg ![:confused: :confused:](https://forums.whonix.org/images/emoji/twitter/confused.png?v=12)
Yes there should have been a reference. It was a statement made by Roger, one of Tor’s chief researchers who worked on remailer networks in the past:
Re: [liberationtech] Jacob Appelbaum's Ultrasurf Report
Oh, thanks!
I am thinking we should still keep chains 3 or 4 hops long just to blend in with most traffic not because of the anonymity benefit. Should I just remove this sentence? I was just explaining the concept.
I agree that around 4 hops should be enough to provide some anonymity, but not totally agree with the rest. I will first try to search for more information on that before actually saying what I’m thinking. I guess that sentence can stay there.
! In T374#5923, @HulaHoop wrote:
How would attachments work? Are they the same instructions as sending a message - Would a user need to always sign and encrypt attachments to the Nymserver?
(Mixmaster takes an -a filename parameter to send an attachment.)
I never sent attachments before. I will answer that once I find out. (That’s why I haven’t answered that new issue you opened)
Well, here is what I have for the instructions sub-section on Nymservers. I changed it quite a bit, but it should have most of what you currently have there. Can you take a look to see if what I wrote is correct?
=== Instructions ===
The process broken down into steps:
# Import Nymserver's Key
# Prepare Nym Request
# Send Request to Nymserver
# Retrieve Messages from Newsgroup
# Decrypt Messages
# Send Mail with Registered Nym
# Reconfigure Nym
'''Conventions'''
For these instructions the example '''nym@server''' will be used. You
must change them to suit the nym choice you make and the domain name
of the Nymserver.
This example is for '''mixnym.net''' but the guide is still generic
and relevant to apply to any other Zax-type Nymserver. For a
selection of Nymservers see this
[https://www.whonix.org/w/index.php?title=Mixmaster&stable=0&shownotice=1&fromsection=Other_Useful_Topics#Zax_Server_List list].
It is important to know which of the address you are going to use
when sending messages to the Nymserver:
'''config@server''': creation or configuration requests, to create
and manage your nym
'''send@server''': send requests, to send messages from your nym to
other people
'''url@server''': url requests, to retrieve an HTML page
==== Import Nymserver's Key ====
A Nymserver's key is usually on their homepage, but sometimes it may
only be available from the PGP keyservers. In that situation, open
KGpg's keyserver dialog, search for it and then import from there.
1. Download the '''mixnym.net''' Nymserver key with curl to home folder.
<pre>
curl -o key.asc http://is-not-my.name/key.asc
</pre>
2. Check fingerprints/owners without importing anything.
<pre>
gpg --with-fingerprint key.asc
</pre>
Always check the fingerprint for yourself. The output at the moment
is:
<pre>
pub 4096R/0xFF4DB66014D0C447 2010-05-05 URL is-not-my.name (URL Retrieval address for Is-Not-My Nymserver) <url@is-not-my.name>
Key fingerprint = 94F2 04C2 8BF0 0937 EFC8 5D1A FF4D B660 14D0 C447
</pre>
3. If it looks good, import with GPG:
<pre>
gpg --import key.asc
</pre>
==== Prepare Nym Request ====
===== Create a Key Pair =====
Create a new key pair for '''nym@server''':
<pre>
KGpg -> Keys -> Generate Key Pair...
Name: John Doe (or any alias of choice)
Email: nym@server
RSA key of 4096 bits
Enter passphrase for key. OK.
</pre>
Equivalent in the command line:
<pre>
gpg --gen-key
</pre>
===== Export Public Key =====
This will extract the newly generated key from your keyring and store
it in a text file. In the following example, I've named that file
<code>pubkey.txt</code>:
<pre>
KGpg -> Select key -> Export Public Key -> File -> pubkey.txt -> OK
</pre>
Equivalent in the command line:
<pre>
gpg --armor --export nym@server > pubkey.txt
</pre>
===== Configure Additional Options =====
You only need to perform this step if you want to configure
additional options on your nym, such as Subject Identification or
Symmetric Encryption. For each option, prepend a line to the
<code>pubkey.txt</code> file using the format:
<pre>
option: setting
</pre>
Caps are unimportant in the option name, but are sensitive in the setting.
The Nymserver parameters specified here are optional.
<ref>https://groups.google.com/forum/#!topic/alt.privacy.anon-server/f3H4Xw5j2LI</ref>
You can set them now or change them in the future as its detailed on
Reconfigure Nym.
'''Fixed (Plaintext) Subject'''
Choose some unique keyword as a '''Subject''' to be able identify the
Nymserver reply on the Newsgroup with the <code>subject</code>
option. Using a fixed subject is convenient, but anyone will be able
to link all the messages for a nym since they all have the same
subject.
'''Hashed Subject'''
A better alternative than the <code>subject</code> option is to use
hashed subjects (hSubs) by providing an hSub passphrase with the
<code>hsub</code> option instead.
An hSub is made of two parts, where the first is a random number and
the second part is the hash of that same random number and a
passphrase. As the hashing is a one-way function, no one can identify
the owner of the message. However, as you know your nym's hSub
passphrase, you can hash it with the random number of every message,
and if the result collides with the second part of the hSub, that
message was sent to your nym. You can read more on
[http://is-not-my.name/hsub.html this post] by Zax.
You can also use these options to set an hSub:
<code>hash-key</code>, <code>hash-subject</code>,
<code>subject-password</code>. These all mean the same as
<code>hsub</code>.
'''Symmetric Encryption'''
You can add a symmetric encryption layer by specifying a key with the
<code>symmetric</code> option.
'''Deletion'''
If you wish to delete your nym, you can send the following option and
setting: <code>delete: yes</code>.
'''Example'''
For example, to add an hSub passphrase of <code>panda</code>, you
should edit the <code>pubkey.txt</code> like this:
<pre>
hsub: panda
-----BEGIN PGP PUBLIC KEY BLOCK-----
<snipped>
-----END PGP PUBLIC KEY BLOCK-----
</pre>
You can add more than one option line to your request. However, you
should remember that some options might create conflicts. For
example, <code>subject</code> and <code>hsub</code> work differently,
but are used for the same purpose. You should choose either one or
the other.
===== Encrypt the Request =====
Now you must wrap <code>pubkey.txt</code>, the message containing your
additional options and public key, to the Nymserver. The
<code>pubkey.txt</code> file is the input for the following example
and the encrypted file will be created as
<code>pubkey.txt.asc</code>:
<pre>
KGpg -> Open Editor -> Open -> Select pubkey.txt
Encrypt -> Select the Nymserver's key
Options -> Allow encryption with untrusted keys -> OK
Save -> Name the ciphertext pubkey.txt.asc
</pre>
Equivalent in the command line:
<pre>
gpg --armor --encrypt --recipient config@mixnym.net pubkey.txt
</pre>
You can ignore the warning about encrypting to an "untrusted" key and
select <code>y</code> for yes.
==== Send Request to Nymserver ====
Before sending the request, update remailer keys first. Its enough to
do this once a day
<ref>https://www.youtube.com/watch?v=dzbrFPO4604 LinuxJournal</ref>:
<pre>
mixmaster
u)pdate stats
*
pick remailer letter (optional)
q)uit
</pre>
Send the encrypted file to the Nymserver with Mixmaster:
<pre>
mixmaster --mail -l *,*,* -c 2 config@mixnym.net pubkey.txt.asc
</pre>
Where:
<code>-l</code> customizes the remailer chain length. The shorter the
chain the faster your mail will be sent and the more likely it will
make it through. Here we are using three random mixes:
<code>*,*,*</code>.
<code>-c</code> sends copies of the message. Here we are using
<code>2</code>.
If necessary, run Mixmaster from command line and check the remailer
chain list to see node availability and reliability stats and choose
accordingly.
That's it! The Nymserver decrypts the message, extracts your Nym's
email address from the supplied Public Key and processes it. Provided
that the Nym isn't reserved or already taken, you will receive a
confirmation message from the Nymserver, encrypted to your nym's key.
Note that the protection provided by Mixmaster is not of importance
here because everything is done behind Tor.
<ref>http://www.mail-archive.com/liberationtech@lists.stanford.edu/msg00022.html</ref>
'''Important'''
It's worth noting that this is the only message you will attach your
public key and the only one the server will ever accept from you
that's not signed by that key. From now on, you nym's digital
signature will prove your ownership of it. Examples on signing can be
found on Send Mail with Registered Nym and
Reconfigure Nym.
==== Retrieve Messages from Newgroup ====
Zax-type Nymservers deliver messages to the nyms via the
alt.anonymous.messages Usenet group (a.a.m). Anyone can access these
messages, but only the nyms can decrypt them, using their private
keys.
As explained previously, you can configure your messages to be
identified by subject. If you chose to use some kind of subject
identification from the previous section, you can go to
Use aam2mail to Fetch Replies.
If you did not configure that and wish to do so, you will have to
send a configuration message to configure a method of subject
identification. You will find an example on
Reconfigure Nym.
If you do not wish to use any kind of subject identification, the
default way to do this is by downloading and attempting to decrypt
every message posted on the Newsgroup. If it works, then the message
was sent to your nym.
===== Use aam2mail to Fetch Replies =====
1. Install git and clone aam2mail source. aam2mail requires no extra
dependencies.
<pre>
sudo apt-get install git
git clone https://github.com/crooks/aam2mail
cd aam2mail
sudo python setup.py install
</pre>
2. Configure aam2mail settings. Use the hsub you chose:
<pre>
mkdir aam2mail/etc
echo 'panda' >> aam2mail/etc/subject_hsub
echo 'news.aioe.org' >> aam2mail/etc/servers
</pre>
3. Run aam2mail periodically to check for messages. There is an
expected delay of a few hours before getting replies.
<pre>
aam2mail --start
</pre>
or
<pre>
aam2mail --restart
</pre>
4. Replies will be downloaded by aam2mail to this path:
''/home/user/Maildir/new''. aam2mail does not decrypt messages for
you but retrieves them only.
Be sure to check for new messages regularly because messages on
Usenet accumulate beyond the fetch-limit and you may miss them.
==== Decrypt Messages ====
With the message saved to a file, open it with KGpg and decrypt it:
<pre>
KGpg -> File -> Open Editor -> Open
Select the file with the message
Decrypt -> Type your nym's key passphrase
</pre>
You should see the plaintext of the message your nym received.
Congratulations for registering your first nym. Now you are ready to
use it for sending messages.
==== Send Mail with Registered Nym ====
To send messages to other people, it is very similar to the way you
did previously for the creation and configuration. KGpg could be used
for that:
<pre>
KGpg -> Open editor
</pre>
Type the message:
<pre>
To: recipient@domain
Subject: Example
This is an example
</pre>
At the bottom, encrypt it:
<pre>
Encrypt -> Select the Nymserver's key
Options -> Allow encryption with untrusted keys -> OK
Save -> Name the ciphertext as message.txt
</pre>
Send it with Mixmaster, but this time to '''send@server''':
<pre>
mixmaster --mail -l *,*,* send@server message.txt
</pre>
Notice that this time we did not send copies of the message. We
advised sending copies on the creation because after receiving the
first one, the server would ignore the others. In this case, if you
send copies, the server will send all of them to the recipient.
The recipient will receive a message from '''nym@server''' and they
can send a reply to that same address.
==== Reconfigure Nym ====
If you wish to add (or change) an option, all you can send another
message to '''config@server''', say <code>option.txt</code>, with the
option(s) you would like to add:
<pre>
hsub: passphrase
</pre>
The message does not need to have a body, just headers. Remember that
after creation, all your messages should be signed before sending to
either '''config@server''' or '''send@server''':
<pre>
gpg --armor --encrypt --sign --recipient config@mixnym.net option.txt
</pre>
Now you just need to send. As you are configuring your nym, you
should send it to '''config@server''':
<pre>
mixmaster --mail -l *,*,* config@mixnym.net option.txt.asc
</pre>
=== Important Notes ===
==== Message Ordering ====
Due to Mixmaster's latency, it is possible that messages arrive out
of order. Your next messages might arrive earlier than the creation
message. If you do not get responses, you will have to send them
again, once the nym is created.
==== Public Mailbox ====
When someone send a message to your nym, the server will receive
it, encrypt to the nym and post on a.a.m so you can retrieve it. The
Newsgroup acts as a public mailbox. Everybody can see and download
the messages but only the intended recipient (your nym) can decrypt
it.
==== Multiple Nyms ====
If you use more than one nym, you need to remember to choose which
nym is going to sign the message, or always the same nym is going to
send the messages, and consequently only his messages will be
accepted. Remember that the only message accepted without a signature
is the creation message.
To specify the nym that is going to sign the message, use the
<code>--local-user</code> flag:
<pre>
gpg --armor --encrypt --sign --recipient send@server --local-user nym@server message.txt
</pre>
==== End-to-End Encryption ====
The encryption layers discussed here will only protect data between
your nym and the server. It is advised that you use some kind of
end-to-end encryption (another layer) between you and the recipient
by encrypting the body of the message first, and then encrypting to
the server's key.
Keep in mind that the headers cannot be encrypted. An end-to-end
encrypted message would look like this:
<pre>
To: recipient@domain
Subject: Subject
-----BEGIN PGP MESSAGE-----
<snipped>
-----END PGP MESSAGE-----
</pre>
After that you would then encrypt to the Nymserver, and it would look
like this in the end:
<pre>
To: send@server
-----BEGIN PGP MESSAGE-----
<snipped>
-----END PGP MESSAGE-----
</pre>
Pending:
Do not use Symmetric: passphrase. If you do, some (if not all) of the free hsub programs and routines will not be able to automatically find your messages. aam2mail supports the option but it complicates the operation. Its also not commonly used and therefore not a good choice for blending in.
I do not remember using the symmetric option, but I do not think that would cause these problems. Can you provide more info on that?
I do not know how Mixmaster’s -c
flag work, but I think it just sends a bunch of copies and all of them might be delivered. For that reason, I guess that we should instruct the user to use copies only for the creation, because the recipient might not like to receive duplicates. What do you think?
There were some parts of your new version that you enumerated the steps like 1) ... 2) ...
, but they are kind of ‘hard coded’. Isn’t there a way to use something to keep track of an ordered list similar to how the section numbers are handled? I just think that using a hard coded index would add a little more work when updating the text.
I did not find a nice way of referencing sub-sections of the text. How exactly do you do that? I never used Wikitext before ![:confused: :confused:](https://forums.whonix.org/images/emoji/twitter/confused.png?v=12)
Thanks!