The procedure for creating an Extra Systems Cypher Net session key by merging the make_common_key options proposed by partners works according to the following algorithm:
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); }
Each subscriber generates its own key (local_key) independently in the make_local_key procedure, and receives the partner's key (remote_key) from the latter in encrypted form during the get_common_key procedure.
Obviously, due to the commutativity of the operation used, this procedure gives the same result at both ends of the connection. That is, both subscribers ultimately receive the same session key for subsequent encryption of all traffic between them.
The content of this page is also available in French, German, Ukrainian and Russian.
© Extra Systems, 2024 |