BIAES

Index

  1. Introduction
  2. Features
  3. Snapshot
  4. Details
  5. Download
  6. Execution
  7. Characteristics
  8. Limitations
  9. Plans
  10. Requirements
  11. Source code
  12. Javadoc
  13. Version
  14. Links
  1. Introduction

    BIAES is a file encryption program written in Java, that uses AES (Rijndael).

    It uses bijective padding and random padding algorithms, supports the use of IVs, encrypts in CBC mode, changes keys dynamically and supports keys of 128, 192 and 256 bits as well as hashed pass-phrases.

  2. Features

  3. Snapshot

    BIAES has a simple and uncluttered front end.

    Here is a snapshot of it running under Windows:

    BIAES front end image

  4. Details

    Hex keys must start with "0x", and must contain a valid 128, 192, or 256 bit key, with all digits present. All other types of key are hashed into a 256-bit key.

    There are two basic modes of operation, with or without an IV:

    • Without IV

      Here BIAES uses a bijective padding algorithm.

      Every 32 blocks, a key change is made.

      This algorithm is completely deterministic, and makes no use of random numbers.

      An attempt to prevent recognition of transmission of multiple documents with the same header under the same key is made. The defense takes the form of hashing the message, and whitening the first block with the hash before encryption.

      However, identical files result in identical cyphertexts if the same key is used.

      This mode is the default.

    • With IV

      Here BIAES uses a random padding algorithm.

      It hashes the IV together with the key-phrase to produce the key.

      Every 32 blocks, a key change is made in a manner that depends on the IV.

    In both modes, the inputs to Rijndael are always at least as long as the key in use, to prevent a narrowing the possibly cyphertexts when short messages are transmitted.

    The hash function employed is SHA-1 in all cases.

  5. Download

    Download the jar file - containing compressed versions of all the class files.

    If you want to interface directly with the classes, because of the compression used you will need to work from the source code - which is available here.

  6. Execution

    Executing the jar (e.g. by double-clicking on it) should result in a display of the GUI front end.

    To run from the command line type "java -jar biaes.jar" [or "jview /cp biaes.jar BIAESFrEnd" if using the Microsoft VM].

    To run the CLI utility, type "java -cp biaes.jar BIAES" [or "jview /cp biaes.jar BIAES" if using the Microsoft VM]. This should present you with a display describing the correct syntax for the parameters.

  7. Characteristics

    BIAES uses CBC mode, and inherits a number of its properties.

    • Decryption in parallel is possible (though the existing Java program doesn't support this);
    • Error propagation is limited to the following block (in "No IV" mode the initial block is also scrabbled).
    • Random access is supported (again, the existing Java program doesn't support this);

  8. Limitations

    • BIAES will not currently encrypt or decrypt documents larger than will fit in memory.

      While handling large files can be handled by an operating system that uses virtual memory, this is not ideal for various reasons.

    • Currently the only version is in Java. While this allows encryption and decryption anywhere there is a JVM, that will not cover every single environment.

  9. Plans

    • Include a bijective compression program.

    • Allow batch operation, in both the GUI and CLI front ends. E.g. by encrypting/decrypting a whole directory of files, if given a directory as a parameter.

    • Add an option to prompt if overwriting existing files - an option which would be on by default.

    • While it doesn't really fit into Java's existing framework for cyphers, it appears that it would be possible to make BIAES descend from the "Cipher" class (though stream functionality would be limited).

    • Making a generic wrapper with an external API for the "padding" operations seems desirable. This would allow their use with other cyphers.

    • Ports to other environments are seen as being desirable. While the author has no plans to do embark on such a task, he would be happy to provide test vectors and support to anyone else interested in performing it.

  10. Requirements

    BIAES should work under implementations of Java 1.1 or later.

    The command-line version may work under Java 1.0.2 - though it has not been tested there.

  11. Source code

    Download a zip file - with the complete source code.

    The source code is also available online in a browsable format here.

  12. Javadoc

    Javadoc for BIAES is available.

  13. Version

    BIAES is at version 1.0.

  14. Links

    Rijndael
    David Scott's web pages

    Matt Timmerman's web pages

    • BICOM - BIjective COMpressor


Index | Links

tim@tt1.org | http://mandala.co.uk/