7z Format

7z is a new archive format, providing a high compression ratio.

The main features of the 7z format:

7z has an open architecture, so it can support any new compression methods.

The following methods currently are integrated into 7z:

Method Description
LZMA Improved and optimized version of LZ77 algorithm
LZMA2 LZMA-based compression method. It provides better multithreading support than LZMA
PPMD Dmitry Shkarin's PPMdH with small changes
BCJ Converter for 32-bit x86 executables
BCJ2 Converter for 32-bit x86 executables
BZip2 Standard BWT algorithm
Deflate Standard LZ77-based algorithm

LZMA is the default and general compression method of 7z format. The main features of the LZMA method:

The LZMA compression algorithm is very suitable for embedded applications. If you want to use LZMA code, you can ask for consultation, custom code programming, and required developer licenses at

www.7-zip.org/support.html

AES encryption

7-Zip supports encryption with the AES-256 algorithm. This algorithm uses a cipher key with length of 256 bits. To create the key, 7-Zip uses a derivation function based on an SHA-256 hash algorithm. A key derivation function produces a derived key from a text password defined by the user. To increase the cost of an exhaustive search for passwords, 7-Zip uses a big number of iterations to produce the cipher key from the text password.

Tips for selecting password length

Here is an estimate of the time required for an exhaustive password search attack, when the password is a random sequence of lowercase Latin letters.

The most complex task for password search attack is SHA-256 calculation. Special SHA-256 hardware or GPU can be used to accelerate password search attack. Now modern GPU can provide about 10 times more performance for SHA-256 calculation than modern CPU. And special SHA-256 hardware can provide about 20 times more performance than GPU.

We suppose that one user with a budget of about $2000 (for GPUs) can check 10000 passwords per second and an organization with a budget of about 10^9 USD (one thousand million US dollars) can check 3 * 10^12 passwords per second. We also suppose that the processor in use doubles its performance every two years; so, each additional Latin letter of a long password adds about 9 years to an exhaustive key search attack.

The result is this estimate of the time to succeed in an attack:

Password Length Single User Attack Organization Attack
1 1 s 1 s
2 1 s 1 s
3 2 s 1 s
4 1 min 1 s
5 30 min 1 s
6 12 hours 1 s
7 14 days 1 s
8 1 year 1 s
9 10 years 2 s
10 19 years 1 min
11 28 years 30 min
12 37 years 12 hours
13 46 years 14 days
14 55 years 1 year
15 64 years 10 years
16 73 years 19 years
17 82 years 28 years
18 91 years 37 years
19 100 years 46 years