Extra Systems

CYPHERNET

консольная система надежной коммерческой шифросвязи через сеть интернет

процедура генерации сеансового ключа make_local_key


Процедура генерации сеансового ключа make_local_key заполняет буфер последовательностью случайных байт. Эта процедура выполняется одинаковым образом каждым из абонентов (естественно, случайные последовательности при этом генерируются разные). Далее в процедуре get_common_key происходит двоичное сложение двух таких ключей, созданных двумя абонентами. В результате получается одно и то же число, которое и используется в качестве сеансового ключа для алгоритма потокового шифрования.

Размер ключа PACKED_SESSION_KEY_LENTH зависит от алгоритма шифрования, но должен быть меньше модуля RSA, иначе его нельзя будет зашифровать. В нашей системе максимальная длина этого параметра задается на один байт короче, чем длина ключа RSA (это гарантирует возможность последующего шифрования).

void make_local_key(void)
{
	memset(local_key.packed, 0, PACKED_VALUE_LENTH);
	fill_random_buffer(local_key.packed, PACKED_SESSION_KEY_LENTH);
	unpack_value(local_key.packed, local_key.unpacked);
}

© Extra Systems, 2024 Extra Web Top