Belt is a 128-bit block cipher developed in 2001 and standardized 6 years later in Belarus.
The official standard STB 34.101.31 informally inherits the name Belt while the core
block cipher tends to be called belt-block.
Additionally to belt-block, the first edition of STB 34.101.31 defines the
following cryptographic mechanisms:
belt-ecb— encryption in the ECB (Electronic CodeBook) mode;belt-cbc— encryption in the CBC (Cipher Block Chaining) mode;belt-cfb— encryption in the CFB (Cipher FeedBack) mode;belt-ctr— encryption in the CTR (CounTeR) mode;belt-mac— data authentication through MAC (Message Authentication Codes).
The standardized encryption modes are
conventional,
they usually accompany every block cipher. The only caveat is that in belt-ctr a
nonce (initialization vector) is encrypted before producing a sequence of
counters from it. Thus, belt-ctr formally implements not the CTR but
CTR2 mode.
The latter mode was originally proposed in the Soviet standard
GOST 28147-89.
In belt-mac, the OMAC mode is instantiated.
The way of instantiation, which avoids multiplication in GF(2^128),
slightly differs from the standard one.
The second version of STB 34.101.31, released in 2011, additionally defines:
belt-dwp— authenticated encryption with associated data (AEAD);belt-kwp— wrapping (encryption and authentication) of keys;belt-hash— hashing;belt-keyrep— deriving one key from another.
In belt-dwp, the DWP mode of AEAD is implemented. Actually, belt-dwp
continues belt-ctr by additionally generating authentication tags over
encrypted and associated (optional public) data. DWP is similar to the
well-known GCM
mode but provides greater security guarantees under nonce misuse (repeating).
The belt-hash algorithm implements hashing using the compression function
belt-compress. To process two 128-bit blocks of data, belt-compress invokes
belt-block 3 times. This means that the hash rate is approximately 2/3 of the
encryption rate.
The belt-keyrep mechanism is based on belt-compress. The mechanism can be
used for key updating (renewing) and diversification (generating a family of
subordinate keys from a master key).
In BeltV2, the CTS
(CipherText Srealing) technique is integrated into the belt-ecb and
belt-cbc modes. This allows encryption to be extended to messages with
a non-integral number of blocks.
The third version of STB 34.101.31, released in 2020, additionally defines:
belt-wblock— wide-block encryption;belt-che— AEAD in the CHE (Counter-Hash-Encrypt) mode;belt-bde— block-wise disk encryption;belt-sde— sector-wise disk encryption;belt-fmt— format preserving encryption;- quotas for encryption keys.
The belt-wblock mechanism is a core of belt-kwp. This mechanism has been
singled out since it has an independent significance allowing to encrypt a wide
data block (for example, 4 Kbytes long) so that each byte of the block affects
all other bytes. In belt-wblock, the theory of
XS-circuits is applied.
The CHE mode is a slightly lightweight
variant of DWP that saves one invocation of belt-block. This is achieved by
loss of compatibility with belt-ctr.
A special feature of the DWP and CHE modes is the permission to issue intermediate authentication tags. This facilitates the processing of large data streams.
The belt-bde mechanism implements the
XTS disk encryption mode
in which one encryption key is dropped. The drawback of belt-bde is that each block
in each disk sector is processed separately, without affecting other blocks.
In belt-sde, this drawback is overcome by switching to belt-wblock.
Using belt-fmt, one can encrypt a string in a numeric alphabet preserving
both the alphabet and the length of the string. A 6-round
alternating numeric Feistel network
is implemented.
Quotas for encryption keys regulate amounts of data that can be safely processed using a single key without changing it. Quotas are determined following the Provable Security paradigm.
In this repo, we are discussing Belt version 3 and higher.
The latest releases of Belt can be found at Releases.
Comments and proposals are processed at Issues.
