aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 1ba80f490ed8552f64dcb14ff035f4feb2d81355 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
   ffff  
  ff    firma -  
  ffff  encrypted mailing list manager
  ff    - a firma cai mas nao quebra 
  ff    

The concept
-----------

 In portuguese, "firma" means for signature, signature and trust checking and
 is a slang for strenght and enteprise.

 All this together just can be one thing: an encrypted mailing list manager :P

 In the streets, the expression "a firma cai mas nao quebra" (the enterprise
 falls but does not breaks) is commonly used to talk about the strenght of a
 group that operates in secrecy. To our list manager, this concept says that
 your encrypted mailing list can stops to work -- if the server goes offline
 or abducted by aliens -- but the system can never be broken. With firma, we
 are trying to follow this philosophy.

 Firma is based on the gpgmailalias.pl perl script, hosted at
 http://www.rediris.es/app/pgplist/index.en.html, but completely rewritten
 in bash.

 Firma works as a command line and MTA pipe alias tool that receives a
 email message in its input, grab the encrypted and signed message and
 re-encrypt and send it to each subscriber.

 In the server you just need the script, a keyring with the list keypair
 and a config file. When mail arrives, it is redirected by the MTA to the
 script and it process the message if its properly encrypted and signed.
 No temporary files are written during a message processing and no default
 message archive, so no messages -- encrypted or not -- rest on your system
 in all steps of the process.

Everyone has the private key X The server has the private key
-------------------------------------------------------------

 When using a encrypted mailing list software, one must choose between
 keeping the private key in the server or send it to each of the
 subscribers. We'll not consider the case where every subscribers encrypt
 the message to all recipients cause this has none automation in the
 process we are looking for.

 For the second option we have the NAH6 Mailman patch,
 http://mail.python.org/pipermail/mailman-coders/2003-June/000506.html

 For the first we have GPG Mailman,
 http://medien.informatik.uni-ulm.de/~stefan/gpg-mailman.xhtml

 This is a question of centralized versus descentralized vulnerability.

 - descentralized means just an alias for incoming encrypted email

 - if some user has its keypair compromissed, the list admin just need
   to remove the correspondent pubkey from the list's keyring

Why Bash
--------

 You may ask why we choosed bash. Its really strange a crypto project using
 shell scripting language. But bash has many advantages:

 - Bash is found in almost all unix-like systems

 - Small dependencies: firma needs just tools like sed, awk, grep, cut and
   gpg itself. Look at the file "GUIDELINES" to see a complete list of all
   unix commands needed to run firma.

 - You can easily put all the tools, scripts and config files in a read-only
   media to protect againt cracks such as rootkits.

 - Keeping your encripted list manager out from a huge and sometimes bugged
   mail software prevents insecure use of your mailing list by an excess of
   unwanted functions and routines.

 - Firma has a total KISS design, and bash helps to keep it simple.

Setup
-----

 Firma installation is quite simple:

 1 - create a folder to store lists; by default firma use /usr/local/etc/lists
     but you can use anything, just edit firma and change FIRMA_LIST_PATH
     variable.
 
 2 - copy firma script to whatever you like, eg. /usr/local/bin and check that
     it has no write permission 

 3 - then create your lists with the command

       firma -c your-list

     this will ask some questions and create a gpg keyring and a config file
     with the following variables:

       MAIL= path for sendmail or any smtp wrapper (eg, /usr/lib/sendmail)
       MAIL_ARGS= command line arguments to the smtp wrapper
       GPG= path for gnupg binary (eg, /usr/bin/gpg)
       LISTNAME= list email (eg, firma@domain.tld)
       LISTADMIN= list administrator email addresses (space separated)
       GPGDIR= gpg dir for the lists' keyring
       PASSWD= passwd for the lists' keyring

     then a gpg keypair and a config file are created. the owner of the config
     file and keyring should be nobody.nobody (or the user your MTA run as) and its
     permissions must be 600.

 4 - create an alias to the list at your MTA; on sendmail or postfix,
     add this to your aliases file:

       your-list: "| /usr/local/bin/firma -p your-list"
       your-list-request: "| /usr/local/bin/firma -r your-list"

     and then run the command

       newaliases

 5 - to subscribe the users and the list admins on the list, use ...

 6 - send encrypted AND signed messages to your-list@yourmachine and look
     what happens :)

Tips
----

 - Use an encrypted swap memory
 - Use a read-only media to store firma and its needed apps
 - Use ramdisk to FIRMA_LIST_PATH so all keys and passwords vanishes if the server frozes
 - Use a big PASSWD, 25+ chars with alpha-numeric and special ascii keys

Design and features
-------------------

 Firma is simple but its simplicity does'nt reflect in lack of design.

 - uses a gpg keyring to store both the keys and the subscribers options
 
 - command line is simple to avoid admin tasks resting in some .bash_history

 - non-pgp blocks in a message are discarded since we dont want to deal with
   unencrypted content

 - all unwanted email headers are striped as a privacy measure for who sends
   the message

 - firma does'nt use any disk write when processing a message; no temp files
   that may rest in the system; everything goes in memory (but take care, 
   sometimes it will use the swap and then is best to make it encrypted) 

 - by default it doesn't archive messages in the server

 - by default it remove the Subject header and put it inside the encrypted
   message, as Subject are outside the PGP/MIME context

 - messages appear to be sent To: Undisclosed Recipients 
  
 Major features are:

 - keyring support

 - administration through email or command-line