Wallet - a simple secure personal data manger for mobile devices

What is this?

Wallet is a simple personal data manager for mobile devices with Java (MIDP1.0) support. Its main function is to provide a safe and convenient place to store small snippest of confidential data, such as passwords and credit card details. Many mobile phones and PDAs have utilities to store snippets of information; the problem with these utilties is that they don't necessarily encrypt the data. While this doesn't cause a problem in normal operation, if the device is lost of stolen there is little to protect your data from villains. Wallet uses the IDEA encryption algorithm to scramble the stored data; this algorithm is generally thought to be unbreakable. Even if an unauthorized person does get access to the data stored by the Wallet application, the encryption ensures that it will be gibberish without your password.

Requirements

Wallet needs a Java-enabled device with MIDP (version 1.0) support, and at least 14 kB of nonvolatile memory for application storage. There also needs to be enough storage for your data; obviously the more data you store, the more memory the application will use.

Basic principles

The Wallet application stores data in the form of labelled snippets. Each snippet can be up to 4 kB long (harware permitting), while the label is a short title: up to 32 characters. Until you have entered the password, neither the labels nor the snippets are visible. The number of individual snippets is limited only by the mobile device's memory. In use, the application displays the titles on the main screen; selecting a title reveals the rest of the entry.

How to use

As mobile devices vary enormously in their keypad and button layouts, it is impossible to describe exactly which keys to press. In addition, the screen appearance and layout will vary from one device to another. The description that follows is based on the Motorola i85 mobile phone.

The first time you use Wallet, you will be prompted to enter a pass code:

You will need to enter it twice, so you can't easily enter a duff pass code by mistake. Pass codes must be four to eight digits long (letters won't work - because the pass code is not shown on the screen as you type, it is virtually impossible to enter letters from a phone handset).

After entering the password, you will see a list (initially empty) of items in the database. To create an item, select `New from the menu (the location of the menu will vary from device to device. On some phones the New command will be mapped onto a button, rather than a menu). You can then enter the title of the snippet, and the text. When a number of snippets have been entered, the initial list screen might look like this:

You should be able to view an existing item by navigating through the list of titles, and selecting the one required. Again, the way this is done varies from one device to another. On the Motorola, you can use the arrow keypad to navigate, then press the `lift handset' button to select. You will then see the text of the item.

As well as viewing the item, you can change it. Changes are automatically saved when you select the `OK' buutton or menu.

You will only be prompted to create the wallet database the first time you use the program. Thereafter, you will only have to enter the password once:

Without the password, you won't be able to view or edit anything. As mentioned above, the password doesn't just control access to the program, it is used as the encryption key in the database.

Intallation

Installation depends on your particular mobile device. Your installation software will typically require a JAR file, and possibly a JAD file as well. Both are in the download package wallet.zip, in directory bin.

Source code

J2ME Source code is included in the download package, in the directory src.

Caveats

This software has a number of limitations of which you should be aware.

Technical notes

Wallet uses the standard `record store' paradigm of MIDP to store data. This way that MIDP provides for the storage of persistent data, even if the underlying hardware supports a real filesystem. Where the Wallet data ends up being stored on a real device is, therefore, at the discretion of the device vendor, and can't be configured in software. IDEA is a symmetric encryption algorithm with a 128-bit key. In applications where paranoid security is required, it is typically used in cipher feedback (CFB) mode. Wallet does not use CFB, because it significantly increases the computation time - this is likely to be important on a mobile device. In any case, CFB only markedly improves security when there is a substantial amount of data, and Wallet is not really designed to deal with large data volumes.

Legal, etc.

Wallet is copyright ©2003 Kevin Boone. This software is provided free-of-charge in the hope that it proves useful. There is no warranty of any kind. The author accepts no responsibility for any adverse consequences of its use. Encryption is, by its very nature, a way of turning readable data into gibberish. Every possible care has been taken to ensure that this software can convert the gibberish back to meaningful data; but if it doesn't, that's too bad. Please test thoroughly before relying on this software. If you can't accept the foregoing , please don't use this software. You may freely copy this software, or use it in any way you see fit, apart from claiming it as your own work. Please send bug reports, etc., to the author.

©1994-2003 Kevin Boone, all rights reserved