[<<<][^^^][>>>]


Запутывание ключа (key meshing)

Алгоритм запутывания ключа (key meshing) не имеет аналогов в Западных алгоритмах. Его суть: делать смену ключа каждый килобайт зашифрованных данных. Применяется совместно с ГОСТ 28147-89 и описан в RFC 4357. По заверению разработчиков из КриптоПро, он служит для усложнения проведения атак по побочным каналам.

Реализация проста и заключается в применении пары операций шифрования/дешифрования над ключом и вектором инициализации.

# для каждого KiB данных
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

На практике он себя уже проявил: есть Sweet32 атака на все 64-битные блочные шифры, которая при использовании алгоритма запутывания ключа уже не применима.