The
Problem: HTML Forms and Confidentiality
This web site is concerned
with the problem of encrypting HTML forms when you don't have
access to the server hosting your web pages.
HTML forms normally rely on server-side capabilities to process
the forms. If you can't run CGI scripts (either because the
people hosting your site won't let you or because you don't know
how to write such scripts), you are faced with two alternatives:
To get privacy, one normally uses the HTTPS
protocol (HTTP running on top of the Secure Sockets Layer, SSL)
to encrypt HTML forms. HTTPS requires that you install an SSL key
and a digital certificate on the web server, so HTTPS is not a
solution for people without access to the server.
MeringueMail is a collection of routines that offers (some level
of) privacy when HTML forms are submitted without relying on
server-side software. The security that MeringueMail provides is
weaker than that offered by SSL. However, MeringueMail may be
acceptable if you absolutely can't run server-side code (see the
disclaimer in red at the bottom of this page).
MeringueMail for
Encrypting Forms
MeringueMail can encrypt HTML
forms for confidentiality by running only (client-side)
JavaScript. The routines can encrypt forms submitted using a
"mailto:" URL or via Response-O-Matic or Bravenet (and
possibly other servers with minor modifications to the JavaScript
routines).
MeringueMail consists of two sets of programs:
For a quick tour of these programs, click here.
The JavaScript routines work with Internet Explorer 5 and 6, with Netscape 4.7, with Mozilla 1.1 and with Firefox. They should also be compatible with more recent versions of these browsers but this hasn't been verified experimentally. MeringueMail appears not to work with the Opera browser which seems to have a very slow JavaScript interpreter.
Downloading
Meringuemail Version 1.2.4
The following downloads are in .zip files.
Contact & Demonstrations
For a demo of MeringueMail, you can send a
message from the following form. If you're just curious to see
how MeringueMail encrypts a form, select the "Test
message" type. If you need help installing MeringueMail (or
experience any other problems), please choose the
"Assistance" option. Bug reports can also be
submitted from the same form.
The form will be processed by the Bravenet form processor, which
means that the form submission won't reveal your e-mail address
(unless you choose to supply it).
Some Mildly
Technical Stuff
MeringueMail's
Cryptography & Security
The cryptographic algorithms
used in MeringueMail are all well known and have been studied by
serious cryptanalysts; i.e. the cryptography is unlikely to be
"snake oil".
"Hybrid" cryptography is used;
i.e. asymmetric (also known as public key) encryption is used for
key exchange and symmetric crypto is used for data encryption.
This is the same principle used by, for example, SSL and PGP.
MeringueMail uses 1024-bit or 1536-bit RSA with PKCS#1 (version
1.5) padding for its asymmetric encryption. The ARC4 (alleged
RC4) algorithm with a 128-bit key is used as a symmetric cipher.
The RSA keys are generated by the client software using Java's
SecureRandom class. The public keys are exported from the client
as JavaScript files to be packaged with your form. The
MeringueMail client restricts access to the RSA private keys
using the PKCS#5 password based encryption scheme.
ARC4 keys are generated by JavaScript routines running in the browsers of visitors to your site. Since JavaScript does not have a strong random number generator, these keys are generated by collecting "noise" from the JavaScript timer and measurements of keyboard and mouse latency. This noise is stored in an "entropy pool" that is used to seed a pseudorandom number generator (PRNG). The PRNG is based on the SHA1PRNG used in Java.
While the cryptography in MeringueMail is almost certainly unbreakable in practice, this strong encryption should not be taken to imply that MeringueMail is "secure". Any software offering encryption that relies entirely on client-side code will not allow for server authentication. Without server authentication, an adversary can launch a "man-in-the-middle" (MITM) attack on your web site. This vulnerability is not unique to MeringueMail but applies to all software that does not provide server authentication. Most SSL solutions provide server authentication, which is why HTTPS is the preferred approach for form encryption. If you believe that MITM attacks are a threat to your web site you should not use MeringueMail.
Database Support
Many web servers run CGI scripts to store the
forms posted in a database. It is a little tricky to store an
e-mailed form in a database. The obvious solution is to manually
capture the data but this is tedious and error-prone.
MeringueMail now supports the ability to write decrypted forms to
a database.
The routines have been tested with Microsoft Access 2000 and
MySQL 4. However, the database functionality should work with
other database management systems (DBMSs) that have ODBC drivers
or JDBC drivers.
If you don't have a DBMS, you should consider downloading the MySQL database. It's excellent which is why it's
downloaded 29,000 times per day.
You can get an overview of how to use a database to store
MeringueMails here.
Frequently Asked
Question: Can MeringueMail be used with Outlook?
(This question has only been asked twice but
"frequently" is a relative term.)
Version 1.2.1 of the MeringueMail client simplified the process
of using MeringueMail with another e-mail client. The procedure
involves exporting the message from your existing mail client and
importing it into MeringueMail. The procedure is described in
section 13 of the documentation.
Release history
Version 1.0 (October 2002): Initial release.
Supported form submission via e-mail and Response-O-Matic.
Version 1.1 (March 2003): Added support for the BraveNet form
processor. The name of form was submitted with the form. Fixed
form rendering bugs in the mail client.
Version 1.2 (May 2003): Added support for character sets other
than Latin-1 ( ISO8859-1), any character in the Unicode character
set can be encrypted. Database functionality was added
simplifying the process of storing a decrypted form in a
database.
Version 1.2.1 (May 2003): Added an option to the MeringueMail
client to allow messages to be imported from other mail clients
such as Outlook and Outlook Express.
Version 1.2.2 (August 2003): Minor enhancements to the database
code and code for recovering if the file containing the
MeringueMails becomes corrupted.
Version 1.2.3 (November 2003): The dialog box for logging onto a
mail server was improved.
Version 1.2.4 (December 2004): Very minor change concerned with
deleting MeringueMails.
Important
The best way to
submit confidential information in a form is by means of HTTPS
(HTTP over SSL). MeringueMail should not be used as an
alternative to a well-designed and extensively analysed protocol
like SSL. If you want to send secure e-mail you should consider
PGP or use a mail client that supports S/MIME (the latter
requires that you get a digital certificate from a certification
authority).
At the risk of stating the obvious, using MeringueMail to encrypt
sensitive personal information such as credit card details would
be grossly irresponsible.