Процедура генерації ключа сеансу make_local_key заповнює буфер послідовністю випадкових байт. Ця процедура виконується однаково кожним із абонентів Extra Systems Cypher Net (звичайно, випадкові послідовності при цьому генеруються різні). Далі у процедурі 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 |
|