Процедура создания сеансового ключа Extra Systems Cypher Net путем слияния предложенных партнерами вариантов make_common_key работает по такому алгоритму:
void make_common_key(void) { unsigned char x, y; int i; for (i = 0; i < PACKED_VALUE_LENTH; i++) { x = local_key.packed[i]; y = remote_key.packed[i]; common_key.packed[i] = x ^ y; } unpack_value(common_key.packed, common_key.unpacked); }
Свой ключ (local_key) каждый из абонентов генерирует самостоятельно в процедуре make_local_key, а ключ партнера (remote_key) получает от последнего в зашифрованном виде в ходе процедуры get_common_key.
Очевидно, что ввиду коммутативности применяемой операции эта процедура дает один и тот же результат на обоих концах связи. То есть, оба абонента в итоге получают один и тот же сеансовый ключ для последующего шифрования всего трафика между ними.
Контент этой страницы доступен также на английском, французском, немецком и украинском языке.
© Extra Systems, 2024 |