Key meshing

There is no key meshing western algorithm analogue. That algorithm changes cipherkey each kilobyte of data processed. It is used together with GOST 28147-89 and is defined in RFC 4357. CryptoPro developers tell that it is intended to resist side-channel attacks.

Implementation is rather simple and uses two crypt/decrypt operations over the key and initialization vector.

# for each KiB of data
def mesh(old_key, old_iv):
    new_key = ecb_decrypt(old_key, MESH_CONST)
    new_iv = ecb_encrypt(old_key, old_iv)
    return new_key, new_iv

It has already showed usefulness: there is Sweet32 attack on all 64-bit blockciphers, that is not applicable to when key meshing used.