initial import of mixmaster-2.0.4b45:

--
This software comes in a client only configuration! If you want
to setup a mixmaster server, read through the example files,
man page and keep in mind, that the server stores all it's files
in $MIXPATH (/etc/mixmaster by default).

The purpose of anonymous remailers (hereafter simply remailers) is
to provide protection against traffic analysis. Traffic analysis
is the study of who you are communicating with, when, and how often.
This reveals more than you might expect about your activities. It
will indicate who your friends and colleagues are (and they can be
told apart by looking at the times you contact them). What your
interests are, from which catalog companies you contact, and which
ftp and WWW sites you visit. Traffic analysis can even reveal
business secrets, e.g. your frequent contact with a rival could
give hints of an impending merger.

Remailers protect your e-mail from traffic analysis. The original
remailers did this by removing all headers, except the subject line,
from any message you sent to them and then forwarding them a
destination of your choice. The recipient of such a message would
not know who had sent it.

The addition of encryption to this scheme gave significant protection
from attackers who simply look a the primary improvement with the
type 2 remailer Mixmaster.

WWW: http://mixmaster.shinn.net

Submitted by Nikolay Sturm <nikolay.sturm@desy.de>
This commit is contained in:
lebel 2001-07-04 15:22:33 +00:00
parent 0525268b7f
commit 0d6bb217ba
13 changed files with 616 additions and 0 deletions

49
mail/mixmaster/Makefile Normal file
View File

@ -0,0 +1,49 @@
# $OpenBSD: Makefile,v 1.1.1.1 2001/07/04 15:22:33 lebel Exp $
COMMENT= "client for anonymous remailing"
VERSION= 2.0.4b45
DISTNAME= mix${VERSION:S/.//g}
PKGNAME= mixmaster-${VERSION}
CATEGORIES= mail security
NEED_VERSION= 1.405
MAINTAINER= Nikolay Sturm <nikolay.sturm@desy.de>
# GPL
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
MASTER_SITES= ftp://ftp.shinn.net/pub/remailer/mixmaster/v2.0/ \
ftp://ftp.zedz.net/pub/crypto/remailer/mixmaster/ \
http://tesla.desy.de/~nsturm/distfiles/
# this is a general mixmaster website, mixmaster itself is unmaintained
HOMEPAGE= http://mixmaster.shinn.net
SYSCONFDIR= /etc/mixmaster
WRKDIST=${WRKDIR}/Mix-${VERSION:S/.//g}
WRKSRC=${WRKDIST}/Src
MAKE_ENV= SYSCONFDIR="${SYSCONFDIR}"
MIXMASTER_FILES=${WRKDIST}/type2.list ${WRKDIST}/mixmaster.conf.in \
${WRKDIST}/destination.block ${WRKDIST}/mix.help.in \
${WRKDIST}/pubring.mix ${WRKDIST}/source.block \
${WRKDIST}/mix.list ${WRKDIST}/urls ${WRKDIST}/headers.del \
${WRKDIST}/getlist ${WRKDIST}/keyinfo.txt.in \
${WRKDIST}/mixmaster.conf ${WRKDIST}/mix.help
post-patch:
@perl -i -p -e "s#MIXDEST#${SYSCONFDIR}#" ${WRKDIST}/getlist
post-install:
@strip ${PREFIX}/sbin/mixmaster
${INSTALL_DATA_DIR} ${PREFIX}/share/examples/mixmaster
${INSTALL_DATA} ${MIXMASTER_FILES} ${PREFIX}/share/examples/mixmaster
${INSTALL_DATA} ${WRKDIST}/mixmaster.1 ${PREFIX}/man/man1
.include <bsd.port.mk>

3
mail/mixmaster/files/md5 Normal file
View File

@ -0,0 +1,3 @@
MD5 (mix204b45.tar.gz) = 7236b81750f07ca97885907d03878fc8
RMD160 (mix204b45.tar.gz) = dc9e6f40516aa8f3d570bbfcc1566401e190fe9a
SHA1 (mix204b45.tar.gz) = 52e723148b2664276e94acd53283bbacbfd37747

View File

@ -0,0 +1,100 @@
$OpenBSD: patch-Src_Makefile,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
--- Src/Makefile.orig Tue Jun 19 18:12:44 2001
+++ Src/Makefile Tue Jun 19 18:14:48 2001
@@ -0,0 +1,96 @@
+MIXPATH=${SYSCONFDIR}
+
+DEF=-DUSE_ZLIB -DUSE_BSAFE
+INC=-Ipcre -Ibsafe
+LIBS=pcre/libpcre.a bsafe/libbsafe.a
+LDFLAGS=-lm -lcrypto -lz
+
+CFLAGS = -O2 -Wall -static
+
+ALL_CFLAGS=$(INC) $(DEF) $(OPT) $(CFLAGS)
+
+CC=gcc
+
+LIB=ar
+RANLIB=ranlib
+MAKE=make
+
+all: mixmaster
+
+alpha:
+ $(MAKE) all OPT=-DDECALPHA
+
+##########################################################################
+
+OFILES = main.o random.o util.o send.o buffers.o \
+ type1.o type2.o chain2.o stats.o keymgt.o \
+ compress.o
+
+.KEEP_STATE:
+
+clean:
+ -rm -f *.o mixmaster mixmaster.exe core
+
+allclean: clean
+ cd bsafe; make clean
+ cd zlib; make clean
+ cd pcre; make clean
+
+newpass:
+ -rm -f keymgt.o mixmaster
+
+mixmaster: $(OFILES) $(LIBS)
+ $(CC) $(OFILES) $(LIBS) -o mixmaster $(LDFLAGS)
+
+
+main.o: main.c mix.h
+ $(CC) -c main.c -o main.o $(ALL_CFLAGS) -DSPOOL='"$(MIXPATH)"'
+
+random.o: random.c mix.h
+ $(CC) -c random.c -o random.o $(ALL_CFLAGS)
+
+util.o: util.c mix.h
+ $(CC) -c util.c -o util.o $(ALL_CFLAGS)
+
+send.o: send.c mix.h
+ $(CC) -c send.c -o send.o $(ALL_CFLAGS)
+
+buffers.o: buffers.c
+ $(CC) -c buffers.c -o buffers.o $(ALL_CFLAGS)
+
+type1.o: type1.c mix.h
+ $(CC) -c type1.c -o type1.o $(ALL_CFLAGS)
+
+type2.o: type2.c mix.h
+ $(CC) -c type2.c -o type2.o $(ALL_CFLAGS)
+
+chain2.o: chain2.c mix.h
+ $(CC) -c chain2.c -o chain2.o $(ALL_CFLAGS)
+
+stats.o: stats.c mix.h
+ $(CC) -c stats.c -o stats.o $(ALL_CFLAGS)
+
+keymgt.o: keymgt.c mix.h
+ $(CC) -c keymgt.c -o keymgt.o $(ALL_CFLAGS) -DPASSPHRASE='"$(PASS)"'
+
+compress.o: compress.c mix.h zlib/zlib.h
+ $(CC) -c compress.c -o compress.o $(ALL_CFLAGS)
+
+sockio.o: sockio.c mix.h
+ $(CC) -c sockio.c -o sockio.o $(ALL_CFLAGS)
+
+client.o: client.c mix.h
+ $(CC) -c client.c -o client.o $(ALL_CFLAGS)
+
+server.o: server.c mix.h
+ $(CC) -c server.c -o server.o $(ALL_CFLAGS)
+
+pcre/libpcre.a:
+ cd pcre; $(MAKE) libpcre.a
+
+bsafe/libbsafe.a:
+ cd bsafe; $(MAKE) libbsafe.a
+
+install: mixmaster
+ cp mixmaster ${PREFIX}/sbin
+

View File

@ -0,0 +1,47 @@
$OpenBSD: patch-Src_util_c,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
--- Src/util.c.orig Tue Jan 19 03:29:19 1999
+++ Src/util.c Mon Jun 18 11:01:24 2001
@@ -177,6 +177,7 @@ tempfile (char *rootname)
{
char tmp[256];
FILE *f;
+ int fptr;
#ifdef SHORTNAMES
if (strlen (rootname) > 2)
@@ -184,8 +185,11 @@ tempfile (char *rootname)
#endif
sprintf (tmp, "%sXXXXXX", rootname);
strcpy (rootname, tmp);
- if (!mktemp (rootname))
- return (NULL);
+ fptr = mkstemp(rootname);
+ if (fptr > 0)
+ close(fptr);
+ else
+ exit(-1);
f = open_mix_file (rootname, "w+");
if (f == NULL)
exit (-1); /* we are in deep trouble and may as well exit */
@@ -202,6 +206,7 @@ tempfileb (char *rootname)
{
char tmp[256];
FILE *f;
+ int fptr;
#ifdef SHORTNAMES
if (strlen (rootname) > 2)
@@ -209,8 +214,11 @@ tempfileb (char *rootname)
#endif
sprintf (tmp, "%sXXXXXX", rootname);
strcpy (rootname, tmp);
- if (!mktemp (rootname))
- return (NULL);
+ fptr = mkstemp(rootname);
+ if (fptr > 0)
+ close(fptr);
+ else
+ exit(-1);
f = open_mix_file (rootname, "wb+");
if (f == NULL)
exit (-1); /* we are in deep trouble and may as well exit */

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-bsafe_Makefile,v 1.1.1.1 2001/07/04 15:22:33 lebel Exp $
use #include <openssl/...> instead
--- Src/bsafe/Makefile.orig Sun Jun 3 20:11:36 2001
+++ Src/bsafe/Makefile Sun Jun 3 20:11:53 2001
@@ -1,6 +1,6 @@
OBJS = bsafeeay.o
SRC = bsafeeay.c
-INCLUDE = -I. -I../ssleay/include
+INCLUDE = -I.
CC = gcc
CFLAGS = -ggdb
AR = ar

View File

@ -0,0 +1,135 @@
$OpenBSD: patch-bsafe_bsafeeay_c,v 1.1.1.1 2001/07/04 15:22:33 lebel Exp $
use openssl header files in /usr/include
and correct some pointer type mismatches
--- Src/bsafe/bsafeeay.c.orig Tue Jan 19 03:29:20 1999
+++ Src/bsafe/bsafeeay.c Sun Jun 3 20:38:34 2001
@@ -54,12 +54,12 @@
#include <stdio.h>
#include <unistd.h>
#include <stdarg.h>
-#include <rsa.h>
-#include <des.h>
-#include <md5.h>
-#include <sha.h>
-#include <rand.h>
-#include <dh.h>
+#include <openssl/rsa.h>
+#include <openssl/des.h>
+#include <openssl/md5.h>
+#include <openssl/sha.h>
+#include <openssl/rand.h>
+#include <openssl/dh.h>
#include <bsafeeay.h>
#include <assert.h>
@@ -1674,8 +1674,8 @@ B_EncryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)kobj->data, sched );
- des_ncbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ncbc_encrypt( in,
+ out,
inlen,
sched,
(des_cblock *)obj->info,
@@ -1698,8 +1698,8 @@ B_EncryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)(kobj->data + 2 * sizeof(des_cblock)),
sched3 );
- des_ede3_cbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ede3_cbc_encrypt( in,
+ out,
inlen,
sched1, sched2, sched3,
(des_cblock *)obj->info,
@@ -1735,8 +1735,8 @@ B_EncryptUpdate( B_ALGORITHM_OBJ obj, PO
kobj = (B_KEY_OBJ)obj->key;
des_set_key( (des_cblock *)kobj->data, sched );
- des_ncbc_encrypt( (des_cblock *)in_pad,
- (des_cblock *)out,
+ des_ncbc_encrypt( in_pad,
+ out,
newlen,
sched,
(des_cblock *)obj->info,
@@ -1772,8 +1772,8 @@ B_EncryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)obj->state, sched );
- des_ncbc_encrypt( (des_cblock *)in_pad,
- (des_cblock *)out,
+ des_ncbc_encrypt( in_pad,
+ out,
newlen,
sched,
(des_cblock *)&(obj->state[8]),
@@ -1809,8 +1809,8 @@ B_EncryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)obj->state, sched );
- des_ncbc_encrypt( (des_cblock *)in_pad,
- (des_cblock *)out,
+ des_ncbc_encrypt( in_pad,
+ out,
newlen,
sched,
(des_cblock *)&(obj->state[8]),
@@ -2039,8 +2039,8 @@ B_DecryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)kobj->data, sched );
- des_ncbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ncbc_encrypt( in,
+ out,
inlen,
sched,
(des_cblock *)obj->info,
@@ -2063,8 +2063,8 @@ B_DecryptUpdate( B_ALGORITHM_OBJ obj, PO
des_set_key( (des_cblock *)(kobj->data + 2 * sizeof(des_cblock)),
sched3 );
- des_ede3_cbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ede3_cbc_encrypt( in,
+ out,
inlen,
sched1, sched2, sched3,
(des_cblock *)obj->info,
@@ -2082,8 +2082,8 @@ B_DecryptUpdate( B_ALGORITHM_OBJ obj, PO
kobj = (B_KEY_OBJ)obj->key;
des_set_key( (des_cblock *)kobj->data, sched );
- des_ncbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ncbc_encrypt( in,
+ out,
inlen,
sched,
(des_cblock *)obj->info,
@@ -2104,8 +2104,8 @@ B_DecryptUpdate( B_ALGORITHM_OBJ obj, PO
kobj = (B_KEY_OBJ)obj->key;
des_set_key( (des_cblock *)obj->state, sched );
- des_ncbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ncbc_encrypt( in,
+ out,
inlen,
sched,
(des_cblock *)&(obj->state[8]),
@@ -2126,8 +2126,8 @@ B_DecryptUpdate( B_ALGORITHM_OBJ obj, PO
kobj = (B_KEY_OBJ)obj->key;
des_set_key( (des_cblock *)obj->state, sched );
- des_ncbc_encrypt( (des_cblock *)in,
- (des_cblock *)out,
+ des_ncbc_encrypt( in,
+ out,
inlen,
sched,
(des_cblock *)&(obj->state[8]),

View File

@ -0,0 +1,37 @@
$OpenBSD: patch-getlist,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
--- getlist.orig Tue Jan 19 03:29:15 1999
+++ getlist Mon Jul 2 23:09:23 2001
@@ -1,7 +1,14 @@
#!/bin/sh
# $Id: patch-getlist,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
+#
+# this script has to be started in the directory containing
+# your remailer file mix.list, type2.list and pubring.mix
+#
-echo "Getting mixmaster list. Please wait ..."
+echo "+---------------"
+echo "| Getting mixmaster list. Please wait ..."
+
+cd MIXDEST
for LIST in mix.list type2.list pubring.mix
do
@@ -24,7 +31,7 @@ do
fi
if grep "$PATTERN" $LIST.tmp >/dev/null
then
- echo "Got $LIST from $URL."
+ echo "| Got $LIST from $URL."
else
rm -f $LIST.tmp
fi
@@ -34,6 +41,7 @@ do
then
mv $LIST.tmp $LIST
else
- echo "Could not get $LIST."
+ echo "| Could not get $LIST."
fi
done
+echo "+---------------"

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-mixmaster_conf,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
--- mixmaster.conf.orig Mon Jul 2 22:52:09 2001
+++ mixmaster.conf Mon Jul 2 22:53:01 2001
@@ -3,7 +3,7 @@
# Name and path of sendmail program. The -t flag is required.
# If you want to queue outgoing messages rather than sending them
# immediately, use the second sendmail line.
-SENDMAIL /usr/lib/sendmail -t
+SENDMAIL /usr/sbin/sendmail -t
#SENDMAIL /usr/lib/sendmail -todq
# Default chain for your remailer messages (0 means random remailer):

View File

@ -0,0 +1,22 @@
$OpenBSD: patch-urls,v 1.1.1.1 2001/07/04 15:22:33 lebel Exp $
--- urls.orig Tue Jan 19 03:29:16 1999
+++ urls Mon Jun 25 21:36:57 2001
@@ -1,12 +1,6 @@
-mix.list finger:mlist@anon.efga.org
-mix.list finger:@core.zedz.net
-mix.list finger:mlist@anon.lcs.mit.edu
-mix.list http://www.publius.net/mixmaster-list.html
-type2.list finger:type2-list@anon.efga.org
-type2.list http://privacy.nb.ca/remailer/type2.list
-type2.list finger:type2-list@anon.lcs.mit.edu
-type2.list http://www.publius.net/type2.list
-pubring.mix finger:pubring-mix@anon.efga.org
-pubring.mix http://privacy.nb.ca/remailer/pubring.mix
-pubring.mix finger:pubring-mix@anon.lcs.mit.edu
-pubring.mix http://www.publius.net/pubring.mix
+mix.list http://mixmaster.shinn.net/stats/mlist
+mix.list http://www.privacyresources.org/frogadmin/MyMixSta1.txt
+type2.list http://mixmaster.shinn.net/stats/type2.list
+type2.list http://www.privacyresources.org/frogadmin/Keys/type2.lis
+pubring.mix http://mixmaster.shinn.net/stats/pubring.mix
+pubring.mix http://www.privacyresources.org/frogadmin/Keys/pubring.mix

View File

@ -0,0 +1,28 @@
#!/bin/sh
# $OpenBSD: DEINSTALL,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
#
# mixmaster de-installation
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
PREFIX=${PKG_PREFIX:-/usr/local}
CONFIG_DIR=${SYSCONFDIR}
if [ -d $CONFIG_DIR ]; then
echo ""
echo "+---------------"
echo "| To completely deinstall the $1 package you need to perform"
echo "| these steps as root:"
echo "|"
echo "| rm -rf $CONFIG_DIR and/or"
echo "| rmuser mixmaster"
echo "|"
echo "| You can also remove any crontab entries for 'mixmaster' by"
echo "| executing as root"
echo "|"
echo "| crontab -u mixmaster -r"
echo "+---------------"
echo ""
fi
exit 0

27
mail/mixmaster/pkg/DESCR Normal file
View File

@ -0,0 +1,27 @@
This software comes in a client only configuration! If you want
to setup a mixmaster server, read through the example files,
man page and keep in mind, that the server stores all it's files
in $MIXPATH (/etc/mixmaster by default).
The purpose of anonymous remailers (hereafter simply remailers) is
to provide protection against traffic analysis. Traffic analysis
is the study of who you are communicating with, when, and how often.
This reveals more than you might expect about your activities. It
will indicate who your friends and colleagues are (and they can be
told apart by looking at the times you contact them). What your
interests are, from which catalog companies you contact, and which
ftp and WWW sites you visit. Traffic analysis can even reveal
business secrets, e.g. your frequent contact with a rival could
give hints of an impending merger.
Remailers protect your e-mail from traffic analysis. The original
remailers did this by removing all headers, except the subject line,
from any message you sent to them and then forwarding them a
destination of your choice. The recipient of such a message would
not know who had sent it.
The addition of encryption to this scheme gave significant protection
from attackers who simply look a the primary improvement with the
type 2 remailer Mixmaster.
WWW: ${HOMEPAGE}

126
mail/mixmaster/pkg/INSTALL Normal file
View File

@ -0,0 +1,126 @@
#!/bin/sh
# $OpenBSD: INSTALL,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
#
# Mixmaster installation script, using many ideas from
# Adam Shostack's Install-Mix.
# use a sane path and install prefix
PATH=/bin:/usr/bin:/sbin:/usr/sbin
PREFIX=${PKG_PREFIX:-/usr/local}
MIXMASTER_BIN=${PREFIX}/sbin/mixmaster
MIXDIR=${PREFIX}/share/examples/mixmaster
MIXDEST=${SYSCONFDIR}
# verify proper execution
#
if [ $# -ne 2 ]; then
echo "usage: $0 distname { PRE-INSTALL | POST-INSTALL }" >&2
exit 1
fi
# Function: set up mixmaster user account.
#
do_accts()
{
groupinfo -e mixmaster
if [ $? -eq 0 ]; then
echo "===> Using existing group 'mixmaster'"
else
echo "===> Creating group 'mixmaster'"
groupadd mixmaster
fi
userinfo -e mixmaster
if [ $? -eq 0 ]; then
echo "===> Using existing account 'mixmaster'"
else
echo "===> Creating user 'mixmaster'"
useradd \
-g mixmaster \
-c "Anonymous Remailer" \
-d $MIXDEST \
-s /sbin/nologin \
-p \* \
mixmaster
fi
}
last_message()
{
echo "|"
echo "| Installation of mixmaster client complete."
echo "|"
echo "| Consider updating the files"
echo "|"
echo "| $MIXDEST/mix.list"
echo "| $MIXDEST/type2.list"
echo "| $MIXDEST/pubring.mix"
echo "|"
echo "| periodically with a script like"
echo "|"
echo "| $MIXDIR/getlist"
echo "|"
echo "| or you might loose mail by using remailers, that are out of order now."
echo "|"
echo "| The binary is suid 'mixmaster' and can only be executed by members of"
echo "| the group 'mixmaster'. Add all users to that group, that are allowed"
echo "| sending anonymous mail via the mixmaster network."
echo "+---------------"
echo ""
exit 0
}
# install client config files
do_install()
{
if [ ! -d $MIXDEST ]
then
install -d -o mixmaster -g mixmaster -m 0710 $MIXDEST
echo ""
echo "+---------------"
else
echo ""
echo "+---------------"
echo "| $MIXDEST does already exist. It will not be updated by this"
echo "| script. If this is not your intention, please deinstall mixmaster,"
echo "| delete $MIXDEST and reinstall."
last_message
fi
if [ ! -d $MIXDEST ]
then
echo "Cannot create $MIXDEST"
exit 1
fi
cd $MIXDIR
for i in "mixmaster.conf type2.list pubring.mix mix.list urls"
do
install -o mixmaster -g mixmaster -m 0640 $i $MIXDEST
done
last_message
}
# Verify/process the command
#
case $2 in
PRE-INSTALL)
do_accts
exit 0
;;
POST-INSTALL)
: install config files, see below
chown mixmaster.mixmaster $MIXMASTER_BIN
chmod 4550 $MIXMASTER_BIN
do_install
exit 0
;;
*)
echo "usage: $0 distname { PRE-INSTALL | POST-INSTALL }" >&2
exit 1
;;
esac

17
mail/mixmaster/pkg/PLIST Normal file
View File

@ -0,0 +1,17 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2001/07/04 15:22:34 lebel Exp $
sbin/mixmaster
man/man1/mixmaster.1
share/examples/mixmaster/destination.block
share/examples/mixmaster/getlist
share/examples/mixmaster/headers.del
share/examples/mixmaster/keyinfo.txt.in
share/examples/mixmaster/mix.help
share/examples/mixmaster/mix.help.in
share/examples/mixmaster/mix.list
share/examples/mixmaster/mixmaster.conf
share/examples/mixmaster/mixmaster.conf.in
share/examples/mixmaster/pubring.mix
share/examples/mixmaster/source.block
share/examples/mixmaster/type2.list
share/examples/mixmaster/urls
@dirrm share/examples/mixmaster