This is version 1.0 of ringsig. This program can be used by anonymous contributors to release partial information about their identity - they can show that they are someone from a list of PGP key holders, without revealing which member of the list they are. Maybe it can help in the recent controversy over the identity of anonymous posters. It's a fairly low-level program, with two included perl script wrappers providing a nicer UI. 1. Read the comments at the top of ringsig.c to understand what this program does. 2. Build ringsig. Run "make ringsig" to compile ringsig.c using the OpenSSL library. This will form an executable file "ringsig". You may need to correct the OpenSSL location specified in the Makefile. Try running ringsig and you will get a usage message. 3. Create a key ring of possible signers. Run the ringsig.c file through the "pgp" program to create a PGP key ring file from the PGP PUBLIC KEY BLOCK data. With the command line version of PGP 2.6.2 the command is: pgp -ka ringsig.c sigring.pgp This will also show you the set of keys, one of which made the signature. (A pre-built key ring file is included for your convenience). 4. Verify the signature on the source code. Run the ringver perl script, giving the PGP key file created in step 3 as an argument, and giving it the ringsig.c file as standard input: ./ringver.pl sigring.pgp < ringsig.c This should print the message "Good signature". 5. How do you know what this means? For that you have to read the paper referenced in the program to become convinced of the theory, and then to study the program to be convinced that it implements the algorithm in the paper. 6. To create your own signatures, create a PGP keyring file which holds your own key as well as the keys of other people that you want people to think might have issued the signature. They must all be RSA public keys. Create a PGP secring.pgp file which holds just your secret key, and change your passphrase on that key to be blank. (This is temporary, you can change it back or delete the secring.pgp when you are done.) Then use the ringsign perl script: "./ringsign.pl filetosign pubkeyfile privkeyfile > outfile" This will append a signature to the file you are signing. You also need to make sure the recipient knows the pubkeyfile, so you may want to send that separately, or include it in the file being signed as was done in this case. 7. Comments and questions can be sent to cypherpunks@lne.com.