ProVEST-32
ProVEST-32, the Phase 1 VEST-32 root cipher in its eSTREAM API version: the VEST-32 structure with earlier counters, permutations and output taps, cyclic key loading and sealing constants in bit 0 of the counters. DarkCrypt ships it as Vest32-Pro with 256-bit keys and IVs. BROKEN - superseded by the Phase 2 VEST-32.
Properties
| Property |
Value |
| Category |
Stream Ciphers |
| Sub-category |
NLFSR Stream Cipher |
| Security status |
❌ Broken |
| Complexity |
Expert |
| Inventor |
Sean O’Neil, Benjamin Gittins, Howard Landman |
| Year |
2005 |
| Origin |
🌐 International |
| Source |
algorithms/stream/vest.js |
Parameters
| Parameter |
Supported values |
| Key sizes |
2 bytes (16 bits) to 64 bytes (512 bits) |
| Nonce sizes |
0 bytes (0 bits) to 64 bytes (512 bits) |
Security
Status: ❌ Broken
Known vulnerabilities
| Issue |
Description |
Mitigation |
| Chosen-IV Inner Collisions |
Joux and Reinhard, “Overtaking VEST” (FSE 2007): counter collisions during IV setup combined with a collision in the linear counter diffusor recover 53 bits of the keyed state with about 2^22 to 2^29 IV setups, cutting exhaustive key search by 53 bits; the same collisions forge VEST MACs |
DO NOT USE - the designers’ later fix is not part of this specification |
Documentation
References
Test vectors
7 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 — ProVEST-32 eSTREAM set 1, vector 0: stream[0..63]
| Field |
Value |
key |
80000000000000000000000000000000 |
iv |
0000000000000000 |
input |
00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 |
expected |
035f0f42b1d8a93ec22dd00a5e46840d 093159d99a97049cedf0a2511ea7f920 ca7793603625d772072d2cb0b0595ee6 196a3fbe808c3adf8582581fb0d72ed4 |
Vector 2 — ProVEST-32 eSTREAM set 3, vector 0: stream[0..63]
| Field |
Value |
key |
000102030405060708090a0b0c0d0e0f |
iv |
0000000000000000 |
input |
00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 |
expected |
9118cf64a92266e55f3d68137d2a60b3 9ae200765036d0c06a40f77142a7310f 3958cc9d82e350d4215063cc2b841adc 05f8beaebace4ee8eec1c719cb7ad93f |
Vector 3 — ProVEST-32 eSTREAM set 6, vector 0: stream[0..63]
| Field |
Value |
key |
0053a6f94c9ff24598eb3e91e4378add |
iv |
0d74db42a91077de |
input |
00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 |
expected |
1adb4077926109a4d1c25eb0fb283c36 3f7f5f4cb7941590e3596c3555ba5367 74250669f6a54376fff7f25bb0631f45 b062159b2685c70b1c0bd541d098c789 |
Vector 4 — ProVEST-32 eSTREAM set 9, vector 0: encryption
| Field |
Value |
key |
0053a6f94c9ff24598eb3e91e4378add |
iv |
0d74db42a91077de |
input |
6dce2f90f152b31475d63798f95abb1c7dde3fa00162c32485e647a8096acb2c |
expected |
77156fe76333bab0a41469280272872a42a160ecb6f6d6b466bf2b9d5cd0984b |
Vector 5 — DarkCrypt Vest32-Pro, 256-bit key and IV, 1-byte message (verified against the DarkCrypt implementation)
| Field |
Value |
key |
ac643e2c1397b00cbcb2e5bacebe4c32a2decc2193408eccef781f2e04284d18 |
iv |
7b48d886824e4cf1df0a552c8abd5e1c9104330b27fc0d386564f77aff6f1532 |
input |
d8 |
expected |
db |
Vector 6 — DarkCrypt Vest32-Pro, 256-bit key and IV, 44-byte message (verified against the DarkCrypt implementation)
| Field |
Value |
key |
b13ea7ded907d0328f861dfebb1e4643fd2eb8faa5c115e6bb062bc397230c05 |
iv |
f71dbde6db5a7dc751f901507d104053dac79e7580a53db0fb396a0bdbf22c19 |
input |
4a0404992fcff9295795f8d20afb7116 5d961cbfe6ddc2b051b0c505231fdfcb 106c382ce6ec66b9d4d39b15 |
expected |
94b9935bb9610fa2608f882c7d5995c4 38f5ed41802f7f3cf5c1e53b5067a4d9 2839e9e67c6c2bb39896b36d |
Vector 7 — DarkCrypt Vest32-Pro, 256-bit key and IV, 150-byte message (verified against the DarkCrypt implementation)
| Field |
Value |
key |
bfdff22e378c5fceb9f220319d70e16e1006659804e769542a66c3f3487b517e |
iv |
3605d37a97da9af4157b820b53c12bd6c93c0b3b3980321426ce5ad1314ce7f7 |
input |
15a1c3f5321768dd66ffd651bd20d2a8 8263033b5cebf03ec087066a2e8610ab 6076ee9682ce495e4b68486fe06e65b4 d8e6be0a44ed361a0130efc9d4751c7e ba184d3b1b33bf2481f43e386857284b 03b82f00a8069c2bd7c2f1cccd6b0764 33d7ed321135caabf68722289cfd5b1b b156d6aba2c7dfa088fc1a6de7f5e421 9d565b207dcbc3373fa8fcbbf1b0e9e8 281e0772b6ab |
expected |
ec3bb6a53bf539b1c36bebd264797744 407ee54ed95766f4394d3de70212281e cc205fa87b40affa71edc2caa9cb4b02 1e7e030337d69d55bc8a2f17fbdd5a15 e7b95c3231ed61684a85514049bbd861 b834451d8ef35e268cc02b8fe11d02f3 a4c9b722459f40ebf52b0de349025a71 8e52a376b968a43a03b649ba93697b39 f34ec1a8b89c8235e76f547632d4c8b1 280791e6131f |
← All algorithms