Процедура генерації ключа сеансу 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 |
|