nymphemeral

What is nymphemeral?

Overview

nymphemeral is a tool made for users searching for secure and anonymous communication on the internet.

It is a GUI client that relies on a pseudonym remailer that communicates to its users by posting messages to a shared mailbox, a Zax-type nym server. Both the server and the client apply an ephemeral encryption layer on their messages based on the Axolotl Ratchet protocol, providing forward and future secrecy to the conversation.

Features

  • Manages pseudonym actions: creation, configuration and deletion, as well as message dispatch and retrieval
  • Communicates with the new nymserv, a Zax-type nym server with forward and future secrecy
  • Uses python-gnupg and pyaxo for encryption
  • Uses aampy to retrieve messages from alt.anonymous.messages
  • Sends messages through Mixmaster, sendmail, or outputs the resulting ciphertexts to be sent manually
  • Supports End-to-End Encryption

Current Release

The current version of nymphemeral is 1.4.2, a beta, released 2016-03-21.

Limitations

Regular Zax-type

nymphemeral does not support the regular Zax-type nym server. It only supports the new nymserv, adding or expecting an ephemeral encryption layer in its messages.

Mixmaster

Although it is supported (and the use is encouraged), nymphemeral is not a Mixmaster GUI. It does enable the users to send their messages to the nym server automatically via Mixmaster, but it cannot be used to send regular email. nymphemeral is a nym client and the only way to exchange messages is to send every message to the nym server, to be processed and then remailed to the recipient. Mixmaster is just one of the output methods.

Important

nymphemeral 1.3.3 was updated to use pyaxo 0.4 that follows the latest (Oct 1, 2014) version of the protocol, which changed the order of the ratcheting. For that reason, old conversations (created with nymphemeral < 1.3.3) might not work properly after the update. We suggest that users update nymphemeral and restart their conversations by changing their nyms’ ephemeral keys. The Configuring the Nym section explains how that can be done.

Installation (On a Debian Wheezy/Ubuntu Trusty system)

Main Dependencies

Make sure that you have the following:

sudo apt-get install python-dev python-tk # If using Debian/Ubuntu
sudo yum install python-devel redhat-rpm-config tkinter # If using Fedora

If you use pip and setuptools (probably installed automatically with pip), you can easily install nymphemeral with:

sudo pip install nymphemeral

The other dependencies used by nymphemeral such as pyaxo, python-dateutil and python-gnupg will be automatically downloaded and installed. You can go to Other Dependencies.

If you do not use pip, you at least have to install setuptools. It provides a few features needed by nymphemeral and will also automatically install the dependencies mentioned above. After making sure you have setuptools, install with:

git clone https://github.com/felipedau/nymphemeral
cd nymphemeral/
sudo python setup.py install

nymphemeral and its dependencies should be installed.

Other Dependencies

nymphemeral will be ready for use after installation via either of the two methods described in Main Dependencies. However, you should follow the instructions from Connections, install Mixmaster and have a News Server running to be able to use all of its features.

Updating

If you installed nymphemeral with pip, you can also use it for updates:

sudo pip install --upgrade nymphemeral

Connections

We recommend using stunnel, Tor and socat along with nymphemeral when downloading and sending messages. If you are a Whonix user, you should go to Connections (Whonix).

Stunnel

stunnel adds TLS to your connections. You can install it with:

sudo apt-get install stunnel4

To configure stunnel, you can use the .conf file we provide with nymphemeral. Copy that file to the directory where stunnel looks for config files (which is usually /etc/stunnel):

sudo curl https://raw.githubusercontent.com/felipedau/nymphemeral/master/connections/stunnel.conf -o /etc/stunnel/stunnel.conf

Open /etc/default/stunnel4 and enable stunnel automatic startup by switching ENABLE to 1:

# Change to one to enable stunnel automatic startup
ENABLED=1

And start it with:

sudo service stunnel4 start

You should get the following message:

Starting SSL tunnels: [Started: /etc/stunnel/stunnel.conf] stunnel.
Tunelling

From the last sections of the .conf file:

[nntps-client]
client = yes
accept = 127.0.0.1:119
connect = 127.0.0.1:10063

[ssmtp-client]
protocol = smtp
client = yes
accept = 127.0.0.1:2525
connect = 127.0.0.1:2526

Note that:

  • The NNTP client is used to download messages. Whenever it accesses port 119, stunnel will connect it to port 10063, adding TLS.
  • The SMTP client is used to send messages. Whenever it accesses port 2525, stunnel will connect it to port 2526, adding TLS.

Tor

Tor is a low-latency communication system used to hide your traffic. If you wish to have the latest stable version you should use this option. If that is not the case, simply install it with:

sudo apt-get install tor

Socat

socat manages the last part of the process, which will make the connections from your machine to the servers via Tor. You can install it with:

sudo apt-get install socat

A script should be used to make the connection itself. Copy both socat scripts we provide with nymphemeral:

curl https://raw.githubusercontent.com/felipedau/nymphemeral/master/connections/socnews.sh -o ~/socnews.sh
curl https://raw.githubusercontent.com/felipedau/nymphemeral/master/connections/socsmtp.sh -o ~/socsmtp.sh

And enable them to be executed:

chmod +x ~/socnews.sh ~/socsmtp.sh
News Server

From the socnews.sh file:

socat TCP-Listen:10063,bind=localhost,fork SOCKS4A:localhost:news.mixmin.net:563,socksport=9050 > /dev/null 2>&1 &

Note that socat accepts connections through port 10063 (the one that stunnel connects to) and then connects to the news server at mixmin.net via Tor through port 9050.

Run it with:

~/socnews.sh
SMTP Server

From the socsmtp.sh file:

socat TCP-Listen:2526,bind=localhost,fork SOCKS4A:localhost:lnwxejysejqjlm3l.onion:2525,socksport=9050 > /dev/null 2>&1 &

Note that socat accepts connections through port 2526 (the one that stunnel connects to) and then connects to the Jeremy Bentham Remailer SMTP server at anemonee.mooo.com via Tor through port 9050.

Run it with:

~/socsmtp.sh

You could also use other SMTP servers, such as these ones:

mail.mixmin.net
mail.allpingers.net

Note

You can use whatever NNTP/SMTP servers you would like. We chose to use those for convenience, but you are totally free to configure other ones or setup your own.

Important

You do not need to start stunnel or Tor again, but the scripts have to be executed every time the system starts up or whenever you wish to use nymphemeral.

Mixmaster

This section describes how to compile the new large-key version of Mixmaster on a Debian Wheezy system. If you already have Mixmaster 3 installed and configured you can go to Pre-installed Mixmaster. If you are a Whonix user, you should go to Mixmaster (Whonix).

Most of the content of this section was taken from this post by the Jeremy Bentham Remailer Admin. The instructions should be helpful for building Mixmaster on other flavors of linux as well. See Ubuntu Loader Changes for a change if using Ubuntu.

Preliminaries

First, you need to install the packages required by Mixmaster and OpenSSL:

sudo apt-get install build-essential libpcre3-dev wget \
zlib1g-dev libncurses5-dev curl perl bc dc bison libbison-dev

Build OpenSSL

Then you need to compile a version of OpenSSL that contains the IDEA cipher. Grab the most recent version (make sure it is version 1.0.1g or later!) from the OpenSSL download page.

Extract the tarball (substituting your version for 1.0.1g):

tar xvf openssl-1.0.1g.tar.gz

Build the distribution:

cd openssl-1.0.1g
./config
make
make test
sudo make install

Note that this installs OpenSSL into /usr/local/ssl. Symlink the new OpenSSL installation into your normal lib and include directories so that the Mixmaster install script can find them. Note that the sudo mv instructions below will only work if you have previous copies of the files installed. If you get an error along the lines of mv: cannot stat libssl.a or similar, just ignore it - you did not have a file there to move:

cd /usr/lib
sudo mv libssl.a libssl.a.old
sudo ln -s /usr/local/ssl/lib/libssl.a libssl.a
sudo mv libcrypto.a libcrypto.a.old
sudo ln -s /usr/local/ssl/lib/libcrypto.a libcrypto.a
cd /usr/include
sudo mv openssl openssl.old
sudo ln -s /usr/local/ssl/include/openssl openssl

Build Mixmaster

Download Mixmaster 3.0.3.

Be sure to verify the SHA256 hash of the downloaded file. You can do this by executing the command:

sha256sum mixmaster-3.0.3b.tar.gz

The output should match the following hex number:

4cd6121e49cddba9b0771d453fa7b6cf824bee920af36206d1414388a47708de

Extract the Mixmaster tarball:

tar xvf mixmaster-3.0.3b.tar.gz

Run the Install script:

cd mixmaster-3.0.3b
./Install

Answer the questions posed by the script:

  • You can just press enter when it prompts for the installation directory. It will be installed at ~/Mix
  • Do not worry about the OpenSSL version questions - 1.0.1g+ is so new the script does not know about it - select the default YES
  • Your new version of OpenSSL does have AES encryption, so answer YES to that question as well
  • As we are going to only use Mixmaster as a client (with nymphemeral), answer NO to the question about running a remailer

Mixmaster should be installed successfully.

Ubuntu Loader Changes

If you are using Ubuntu and see the following compile error:

gcc mix.o rem.o rem1.o rem2.o chain.o chain1.o chain2.o nym.o pgp.o pgpdb.o pgpdata.o pgpget.o pgpcreat.o pool.o mail.o rfc822.o mime.o keymgt.o compress.o stats.o crypto.o random.o util.o buffers.o maildir.o parsedate.tab.o rndseed.o menu.o menusend.o menunym.o menuutil.o menustats.o main.o /usr/local/ssl/lib/libcrypto.a  -lz -L/usr/lib/x86_64-linux-gnu/ -lpcre -L/usr/lib/x86_64-linux-gnu/  -lncurses -L/usr/lib/x86_64-linux-gnu/ -o mixmaster
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [mixmaster] Error 1
Error: The compilation failed. Please consult the documentation (section `Installation problems').

you should make the following changes to the Install script, due to modifications Ubuntu has made to the loader.

On line 402 of the Install script, change:

LDFLAGS=

to:

LDFLAGS="-ldl"

Getting New Remailer Stats

Before you can use Mixmaster, you need to update the stats. We are going to use the pinger from the Jeremy Bentham Remailer, but the process should be similar to other pingers you wish to use.

An easy way to do this securely is with curl. First, create a file called update.sh in your ~/Mix directory, with the following contents:

#!/bin/bash
export SSL_CERT_DIR=$HOME/Mix/certs
rm pubring.asc pubring.mix mlist.txt rlist.txt
curl --cacert ./certs/anemone.pem https://anemone.mooo.com/stats/mlist.txt -o mlist.txt
curl --cacert ./certs/anemone.pem https://anemone.mooo.com/stats/rlist.txt -o rlist.txt
curl --cacert ./certs/anemone.pem https://anemone.mooo.com/stats/pubring.mix -o pubring.mix
curl --cacert ./certs/anemone.pem https://anemone.mooo.com/stats/pgp-all.asc -o pubring.asc

Change the script to executable mode:

chmod +x update.sh

Next, create the ~/Mix/certs directory and add anemone.mooo.com’s certificate:

mkdir ~/Mix/certs
cd ~/Mix/certs
wget http://anemone.mooo.com/anemone.pem

Now that you have downloaded the certificate file, you can securely update your remailer stats by simply:

cd ~/Mix
./update.sh

You should update the remailer stats at least once a day when using Mixmaster.

Config File

Mixmaster just needs to be configured through the ~/Mix/mix.cfg file. A very simple config file could be written as follows:

CHAIN *,*,*,*,*
SMTPRELAY localhost
SMTPPORT 2525
HELONAME anonymous.invalid
REMAILERADDR anonymous@anonymous.invalid
Chain

The CHAIN is the path that your messages will take before being delivered. In the configuration above, the messages are going to pass by five mixes, and finally get to the actual target. You can use any sequence and number of mixes in the chain, passing their names or simply * (which means that it could be any mix), separated by commas.

Note

Adding more mixes to the chain will probably increase the latency to deliver your messages. That is actually not a bad thing, but you should decide how long you are willing to wait to exchange messages.

SMTP Server

If you followed Connections, you remember that we will use port 2525 to reach an SMTP server. Using the options SMTPRELAY and SMTPPORT will tell Mixmaster to use that specific connection. Finally, as part of the protocol you need to provide a HELONAME and a REMAILERADDR. As we want to be anonymous, we provide an invalid address.

Note

nymphemeral should be ready to tunnel via Tor messages sent using Mixmaster!

Pre-installed Mixmaster

Although we encorage the use of the Mixmaster version installed with this section, improved with 4096-bit RSA (and other features), you are allowed to use any derivative of Mixmaster 3. As long as you use that version and nymphemeral is able to find both paths to the binary and config file, you are fine. Configuring these paths is explained later on [mixmaster].

News Server

Zax-type nym servers deliver messages to their nyms by posting them on a news group. aampy is the tool underneath nymphemeral that downloads those messages via a news server. The default news server configured in nymphemeral.cfg is set to localhost, port 119. This default is useful if you use stunnel to encrypt the connection between localhost:119 and your actual news server, exactly what was done on Connections. If you followed that section, you do not need to configure anything.

Note

nymphemeral should be ready to tunnel your news feed via Tor!

If you want to connect directly to the news server, you should edit nymphemeral.cfg and change the address and port of the news server appropriately. Unfortunately, the python 2.7 nntplib module does not support connections over SSL/TLS.

Usage

Files Structure

After installing the client, run nymphemeral at the command line and it will create the following files and directories inside the base directory (~/.config/nymphemeral):

  • *.gpg: GPG keyring files
  • nymphemeral.cfg: Config file that stores preferences and paths used by the client. This file is not encrypted and does not have sensitive data
  • hSub files that store the hSub passphrases of the nyms
    • encrypted_hsubs.txt: File encrypted to every nym (with asymmetric encryption) by one that has access to it
    • hsubs.txt: File used to store (temporarily) the hSub passphrases of new nyms that still do not have access to the encrypted one
  • db: Database directory that stores the conversation states of all the nyms. These databases are protected with symmetric encryption (using the passphrases the user provided when creating each nym)
  • messages: Directory that stores the read and unread messages
    • unread: Directory that stores the messages downloaded from the news group, that are already encrypted with ephemeral encryption from the server
    • read: Directory that stores the messages the user chose to save, that are encrypted with asymmetric encryption, where the nym encrypted to itself

Configuring nymphemeral

You can modify nymphemeral.cfg per your liking. We will not describe the whole file, but only the options relevant to the user that belong to the following sections:

[main]

The value of logger_level can be modified to control what nymphemeral logs on the console. These values are the same ones used by Python’s logging module. You can choose from:

debug
info
warning
error
critical

Example: debug is the most sensitive level. When it is set, every message will be logged from debug to critical. (Default: warning)

[mixmaster]

This section defines the paths nymphemeral searches for Mixmaster’s binary and config file. Values defined on this section will be checked before the default paths Mixmaster usually uses for both compiled (as instructed on Mixmaster) and installed (with the package manager) versions:

Option Compiled Installed
binary ~/Mix/mixmaster mixmaster
cfg ~/Mix/mix.cfg ~/.Mix/mix.cfg

If your Mixmaster installation is different from these values, you must change the binary and cfg options accordingly. nymphemeral calls --version on the binary and checks for the existence of the config file. Only after checking that Mixmaster is some derivative of Mixmaster 3 and the config file is found, it assumes it is installed and working. Finally it searches for the mix chain to be displayed on the GUI, but will not prevent Mixmaster to be used if it is not found.

[newsgroup]

If you already have a news server running, replace group, server and port with its information. Otherwise, visit News Server to find out how to create one using socat and stunnel.

Important

Changes made to nymphemeral.cfg will only take effect by restarting the client.

GPG Keyring

nymphemeral has its own GPG keyring within its base directory and it does not access information from the user keyring. Therefore, if you are going to use End-to-End Encryption, you have to manually add the respective key to the keyring.

More information regarding End-to-End Encryption can be found in the Sending Messages and Decrypting Messages sections.

Adding Key

Considering you will encrypt a message to a user whose public key is in the pkey.asc file in the home directory. You can add it to nymphemeral’s keyring with:

gpg --homedir ~/.config/nymphemeral --import ~/pkey.asc

Now you can type its UID or fingerprint when encrypting the message.

Similarly, you can also add private keys to the keyring if you expect to receive messages encrypted to a specific key you have. The GPG Agent will automatically prompt you for a passphrase and decrypt the message.

Default Keys

nymphemeral’s package includes the public keys of the nym.now.im server and the nymphemeral nym. By importing the former to the client keyring you are able to create and use nyms on that server, and if you need to contact us, the latter allows you to send end-to-end encrypted messages to nymphemeral@nym.now.im. In order to import them you should click Import Default Keys in the Nym Servers window (presented in Managing Servers).

The included keys can be found in the nymphemeral.keyring module as .asc files and a detached signature of nym.now.im’s public key signed by the Jeremy Bentham Remailer Admin can be used to verify the nym-now-im-server.asc file.

Launching nymphemeral

Login Window

Login Window

The client is launched with:

nymphemeral

First Time Use

When you launch nymphemeral for the first time, you must import a server public key in order to create and use nyms.

Managing Servers

You can import the Default Keys as well as add, modify or delete any server public key whenever you want by clicking Manage Servers in the login window.

Starting Session

To start a session, in the login window, fill in the Address and Passhphrase fields, choose the output method that you would like to use and click Start Session. If you wish to create a nym, you can follow the same steps - nymphemeral asks if a nym is being created when the address is not found in the keyring.

Output Method

When Mixmaster is installed and configured, clicking the Send via Mixmaster radio button on the login screen will route all messages to the nymserv through the Mixmaster network automatically.

If you have sendmail configured and running on your machine, you can also choose to send messages to the nymserv as regular email via the Send via Email radio button automatically.

If you would rather send messages manually, select the Display Output in Message Window radio button and then copy the encrypted message from the message window for transmission. If you choose this option it is your responsibility to send the encrypted message to the server. When this last method is being used, the client assumes that the message will get to the server. Therefore, when you finish the creation process, the nym information will be written to disk right away as well as it will be deleted when you confirm to delete the nym.

Important

Regardless the method that is being used, information about the message that has just been created is displayed in the first lines of the text box from the current tab.

Key Manager Window

Key Manager Window

Server Manager Window

Server Manager Window

Creating a Nym

Nym Not Found Dialog

Nym Not Found Dialog

Back to the login window, when you click Start Session and the nym server’s public key is already in the keyring, then the client will search for the nym address that was given. If the nym is not found, you will be asked if you wish to create it and you will be directed to the Create Nym tab in the main window. To create a nym, you must provide the following information:

Pseudonymous Name

The Pseudonymous Name field is the name you are going to give to the nym.

Duration

You must provide the duration of the nym’s key. Once the key expires, the nym expires as well. The Duration must be in the same format used by GPG (e.g. 1w, 2m, or 3y).

Ephemeral Key

The Axolotl Ratchet protocol derives a master key from the handshake to start a conversation. Since there is already a secure channel between you and the server (using its PGP key), the user can go ahead and send a master key to skip that extra step. That key is the Ephemeral Key you need to provide. It can be any random string since it is ephemeral and will be used only on the first round of message exchange until the ratcheting starts.

Tip

nymphemeral will automatically generate one by default, but you can uncheck Auto-generate and provide a key that you generated.

hSub Passphrase

Using a hashed subject (hSub) is the easiest way of setting up subject identification for your nym to retrieve messages. An hSub is made of two parts, where the first is a random number and the second 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. More on hSub by Zax.

Saving your hSubs allows nymphemeral to retrieve messages from all your nyms at once. You just need to know how the encryption of the hSub passphrases file works:

The first nym that you create will encrypt its hSub passphase and can only be decrypted by itself. The next nym to be created will save its hSub passphrase in plaintext and will not be able to access the encrypted file until you re-log in with the first nym. Then, it will encrypt both passphrases to both nyms and if you create a third nym, those two other nyms can encrypt the passphrases to the third one and so on.

Tip

nymphemeral will automatically generate one by default, but you can uncheck Auto-generate and provide a key that you generated.

Note

Although the hSub Passphrase is not required to use a nym, this client works better if you use one and we decided to make it a required field. If you feel that it should allow nyms without an hSub, let us know.

Create Nym

Finally, click Create Nym. The text box will display the output message. Read it to see if the message was sent successfully. The nym will be created and the other tabs will be enabled.

Create Nym Tab

Create Nym Tab

Creation Message

Creation Message

Decrypting Messages

After the nym is created, go to the Inbox tab. There you can click Retrieve Messages to start aampy and if there are messages sent to you that are tied to your hSub key, they will be displayed in the Messages list box. Clicking on one of the messages will decrypt it and display it in the Body tab and its headers in the Headers tab. If you wish to keep the message, click Save to Disk. You can also click Reply Message and you will be directed to the Send Message tab.

Note

Clicking on undecrypted messages will delete them when the process is done. If it fails to decrypt then it is useless. If it succeeds, then it becomes useless due to the Axolotl ratchet protocol. You can go to pyaxo to read more about it.

Inbox Body Tab

Body Tab

Inbox Headers Tab

Headers Tab

End-to-End Encryption

If someone has sent you an End-to-End Encrypted message, when you click on the message to decrypt it, after removing the encryption layers that were added by the nym server, the GPG Agent will prompt you for a passphrase if the key is found in the keyring:

GPG Agent

GPG Agent

If the key is not found or the authentication fails, the ciphertext will be displayed, allowing you to decrypt it manually.

Note

You should read the GPG Keyring section to add the keys involved in the End-to-End Encryption to nymphemeral’s keyring.

Sending Messages

Sending a message is simple. Fill in the Target Email Address, Subject and Message fields and click Send.

Send Message Tab

Send Message Tab

Sent Message

Sent Message

Optional Headers

In the Headers text box, other headers can be added to the message in the format:

HeaderA: InformationA
HeaderB: InformationB
Example

I know a server that allows me to post messages to Usenet. I provide its email address in the Target Email Address and as I wish to post to alt.privacy.anon-server, I type the following header in the Headers text box:

Newsgroups: alt.privacy.anon-server

The server will process the message and the post should arrive in the news group.

End-to-End Encryption

End-to-End Encryption

End-to-End Encryption

The End-to-End Encryption section enables the user to encrypt and/or sign messages. The Target and Signer fields can receive either an UID or fingerprint. If more than one key is found for that query, nymphemeral will ask the user to be more specific, to avoid ambiguity.

There is also the option to use the Throw Key IDs checkbox, so that if someone obtains the ciphertext, they will not even be able to find out whom the message was encrypted to, because the key ID was removed. Therefore, when someone receives that message, they will have to use all of their keys to attempt to decrypt it.

If the message is being signed, the GPG Agent will prompt you for a passphrase to unlock the secret key:

GPG Agent

GPG Agent

Note

You should read the GPG Keyring section to add the keys involved in the End-to-End Encryption to nymphemeral’s keyring.

Message Structure

It is important to know how the contents of your message are handled. For example, if you composed the following message:

To: recipient@domain
Subject: Foo

Bar

It would be encrypted to the server (with both asymmetric and ephemeral encryption layers) and would become the following message to be transmitted:

To: send@server

-----BEGIN PGP MESSAGE-----
<ciphertext>
-----END PGP MESSAGE-----

If someone intercepted the message, they would only learn that you sent a message to send@server, which would remail it to someone else. However, they learn nothing about the original message, because it is encrypted to the server. Now, when the server receives and decrypt it, the original message is accessed:

To: recipient@domain
Subject: Foo

Bar

That is the reason that another layer (end-to-end encryption) should be added. That way, when the server removes its encryption layer, it would only have access to the headers:

To: recipient@domain
Subject: Foo

-----BEGIN PGP MESSAGE-----
<ciphertext>
-----END PGP MESSAGE-----

It is called “end-to-end” because only the ends of the transmission (you and the recipient) can access the data. That last encryption layer must be removed by the recipient, to finally obtain the plaintext of the message. The last thing you should know is that the headers cannot be encrypted. Therefore, make sure to use non sensitive information for the subject and optional headers you might add.

Configuring the Nym

Configure Nym Tab

Configure Nym Tab

On the Configure Nym tab you can modify the Pseudonymous Name, Ephemeral Key and hSub key of your nym (both keys can be automatically generated by nymphemeral). Clicking on Configure will create the message that will be sent to the server. If you wish to not use your nym anymore, click Delete Nym.

Tip

If you believe that the server is not processing your messages, try to change the Ephemeral Key so that the databases will be synced.

Unread Messages Counter

Unread Counter Tab

Unread Counter Tab

On the Unread Counter tab there is a list of nyms with unread messages, so you do not need to log in with all your nyms to check if they have new messages (as long as you are retrieving messages with a nym that has access to the encrypted hSub passphrases).

Other

Changelog

nymphemeral 1.4.2, released 2016-03-21

  • Make the login interface more intuitive and close #21
  • Minor interface enhancements
  • Require setuptools only
  • Include default keys and close #29
  • Organize imports and close #37

nymphemeral 1.4.1, released 2016-02-13

  • Add nymphemeral’s own method to check a nym’s passphrase
  • Fix issue when retrieving nyms due to a change to python-gnupg
  • Enable auto-generation of ephemeral and hSub keys
  • Add method to retrieve a specific nym
  • Add expiration attributes to the Nym class and display the expiration date on the GUI

nymphemeral 1.4, released 2015-12-19

  • Make a proper entry point to launch the GUI
  • Close #24 by using versioneer for version management

nymphemeral 1.3.6, released 2015-12-17

  • Fix issue #26 to format the key info of nyms without expiration
  • Fix issue #30 to not crash nymphemeral when a mix chain is not found
  • Add an Updating section to the docs
  • Do not call the package manager to install dependencies

nymphemeral 1.3.5, released 2015-09-09

  • Improve the logger level
  • Add more information to the installation sections
  • Define which attributes and methods of Client are private
  • Improve the code (add constants, simplify methods, remove redundancy)
  • Fix bug to save new databases in the db directory

nymphemeral 1.3.4, released 2015-07-22

  • Improve recognition of the Mixmaster installation
  • Clarify nymphemeral’s features and limitations
  • Add instructions for Whonix

nymphemeral 1.3.3, released 2015-07-18

  • Use pyaxo 0.4
  • Use Python’s logging module
  • Slightly improve aampy’s performance
  • Improve parsing of the config file
  • Improve and add more input validation
  • Bug fixes and code improvements

nymphemeral 1.3.2, released 2015-05-13

  • Add End-to-End encryption
    • Encrypt
    • Throw key IDs
    • Sign
    • Support GPG agent
  • Redesign aampy

nymphemeral 1.3.1, released 2015-03-03

  • Create client module
  • Modify the GUI to be a layer between the user and the client

nymphemeral 1.2.3, released 2015-02-14

  • Remove dependency links processing from pip install

nymphemeral 1.2.2.1, released 2014-11-14

  • Remember the output method being used

nymphemeral 1.2.1, release 2014-11-10

  • Append date to the title of the messages in the ‘inbox’
  • Encrypt hSub passphrases
  • Support headers added by the user at the top of the message being composed
  • Add the ‘In-Reply-To’ header to the reply

Feedback and Contact

Please use the GitHub issue tracker to leave suggestions, feature requests, bug reports, complaints or any contribution to nymphemeral. If you feel the need to talk about something else, send messages to nymphemeral@nym.now.im. You can also use its public key for end-to-end encryption:

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
Y27t5vjdCGe7mIVrTCri
=/TNE
-----END PGP PUBLIC KEY BLOCK-----

Acknowledgements

  • Thanks to rxcomm for the new nymserv, nym.now.im, pyaxo, aampy and for assisting on the development of this client
  • Thanks to crooks (Zax) for the original nymserv software
  • Thanks to tych0 for assisting on fixes and improvements
  • Thanks to HulaHoopWhonix (from the Whonix team) for testing and providing awesome feedback, such as bug reports, feature requests and suggestions