Процедура создания сеансового ключа 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 |
|